v1olley能干那些事?发送get请求

public void getJson() {
String url = "http://"+host+":8080/web/json.jsp?username=xjs&password=123456";
mQueue.add(new JsonObjectRequest(Method.GET, url, null,
new Listener() {
@Override
public void onResponse(JSONObject response) {
Log.e(TAG, "response : " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String err = error.getMessage();
Log.e(TAG, "err : " + err);
}
}));
}
Volley发送post请求:
public void postJson() {
String url = "http://"+host+":8080/web/json.jsp";
StringRequest postRequest = new StringRequest(
Request.Method.POST,
url,
new Response.Listener() {
@Override
public void onResponse(String response) {
// response
Log.d("Response", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", error.getMessage());
}
}) {
@Override
protected Map getParams() {
Map params = new HashMap();
params.put("username", "xjs");
params.put("password", "123456");
return params;
}
};
mQueue.add(postRequest);
}
3.

Volley获取网络图片:

public void getImage() {
String imageUrl = "http://"+host+":8080/web/image.jsp";
NetworkImageView view = (NetworkImageView) findViewById(R.id.network_image_view);
view.setDefaultImageResId(android.R.drawable.ic_menu_rotate);
view.setErrorImageResId(android.R.drawable.ic_delete);
view.setImageUrl(imageUrl, new ImageLoader(mQueue, new BitmapLruCache(1024 * 4)));
}

4 Volley发送Https请求,需要修改源码:

protected HttpURLConnection createConnection(URL url) throws IOException {
if (url.toString().toLowerCase(Locale.CHINA).startsWith("https")) {
HTTPSTrustManager.allowAllSSL();
}
return (HttpURLConnection) url.openConnection();
}
//HTTPSTrustManager.java:
public class HTTPSTrustManager implements X509TrustManager {
private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[] {};
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {
// To change body of implemented methods use File | Settings | File
// Templates.
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {
// To change body of implemented methods use File | Settings | File
// Templates.
}
public boolean isClientTrusted(X509Certificate[] chain) {
return true;
}
public boolean isServerTrusted(X509Certificate[] chain) {
return true;
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return _AcceptedIssuers;
}
public static void allowAllSSL() {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
// TODO Auto-generated method stub
return true;
}
});
SSLContext context = null;
if (trustManagers == null) {
trustManagers = new TrustManager[] { new HTTPSTrustManager() };
}
try {
context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
}
}

5 Volley获取服务端返回的cookie,需要修改源码:

@Override
public HttpResponse performRequest(Request> request,Map additionalHeaders)
throws IOException,AuthFailureError {
for (Entry> header : connection.getHeaderFields().entrySet()) {
if (header.getKey() != null) {
String key = header.getKey();
List values = header.getValue();
if(key.equalsIgnoreCase("set-cookie")){
StringBuilder cookieString = new StringBuilder();
for(String value : values){
cookieString.append(value).append("\n");//用\n作为分隔符,cookie中不应该有回车符号
}
cookieString.deleteCharAt(cookieString.length() - 1);
Header h = new BasicHeader(header.getKey(), cookieString.toString());
response.addHeader(h);
}else{
Header h = new BasicHeader(header.getKey(), values.get(0));
response.addHeader(h);
}
}
}
}
//然后再request中重写parseNetworkResponse():
@Override
protected Response parseNetworkResponse(NetworkResponse response) {
Response superResponse = super.parseNetworkResponse(response);
Map responseHeaders = response.headers;
String rawCookies = responseHeaders.get("Set-Cookie");
//服务端返回是 set-cookie:JSESSIONID=D90B58454550B4D37C4B66A76BF27B93; Path=/otn BIGipServerotn=2564030730.64545.0000; path=/
String part1 = substring(rawCookies, "", ";");
String part2 = substring(rawCookies, "\n", ";");
//客户端需要的是 cookie:JSESSIONID=D90B58454550B4D37C4B66A76BF27B93; BIGipServerotn=2564030730.64545.0000;
cookies = part1 + "; " + part2 + ";";
return superResponse;
}

6 Volley发请求的时候上传cookie,在request中重写getHeaders():

@Override
public MapgetHeaders() throws AuthFailureError {
if(cookies!= null && cookies.length() > 0){
HashMap headers = newHashMap();
headers.put("Cookie",cookies);
returnheaders;
}
returnsuper.getHeaders();
}

7 Volley自定义request:

public class ByteArrayRequest extends Request{
private final Listener mListener;
public ByteArrayRequest(int method, String url, Listener listener, ErrorListener errlistener) {
super(method, url, errlistener);
mListener = listener;
}
@Override
protected Response parseNetworkResponse(NetworkResponse response) {
if(response == null){
return null;
}
if(response.statusCode != HttpStatus.SC_OK){
return null;
}
byte[] bytes = response.data;
return Response.success(bytes, null);
}
@Override
protected void deliverResponse(byte[] response) {
if(mListener != null){
mListener.onResponse(response);
}
}
}

8 Volley设置请求超时时间:

@Override
public RetryPolicy getRetryPolicy() {
RetryPolicyretryPolicy = new DefaultRetryPolicy(5000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
returnretryPolicy;
}

转载:http://www.android100.org/html/201406/04/17036.html

关于图片加载:

RequestQueue mQueue = Volley.newRequestQueue(context);
ImageLoader imageLoader = new ImageLoader(mQueue, new BitmapCache());

ImageListener listener = ImageLoader.getImageListener(ivAdvertise,
R.drawable.defaulto, R.drawable.error);//

imageLoader.get(head_img, listener, 200, 200);

public class BitmapCache implements ImageCache {

private LruCache<String, Bitmap> mCache;

public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {

@Override
protected int sizeOf(String key, Bitmap value) {
// TODO Auto-generated method stub
return value.getRowBytes() * value.getHeight();
}
};
}

@Override
public Bitmap getBitmap(String url) {
// TODO Auto-generated method stub
return mCache.get(url);
}

@Override
public void putBitmap(String url, Bitmap bm) {
// TODO Auto-generated method stub
mCache.put(url, bm);
}
}

//宽高 可不设  关于

NetworkDispatcher还没得及看 详见http://www.android100.org/html/201406/03/16240.html

万能的Volley的更多相关文章

  1. Volley手写属于自己的万能网络访问框架

    用户在调用层(Activity或Service中),发起一个网络请求,该请求肯定包含url,请求参数(requestParameter),以及我们需要给调用层提供一个请求成功或失败以后回调监听的接口d ...

  2. Android 快速开发系列 打造万能的ListView GridView 适配器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...

  3. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  4. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  5. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  6. 快速Android开发系列网络篇之Volley

    Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法 RequestQueue mRequestQueue = Volley.newRequest ...

  7. 打造android偷懒神器———ListView的万能适配器

    如果你去做任何一个项目,我相信你都会跟我有一样的经历,最最普遍的就是列表显示ListView,当然,写N个自定义的适配器也是情理之中.虽说程序员本身就是搬砖,做这些枯燥无味的重复的事情也是理所当然,但 ...

  8. 打造android偷懒神器———RecyclerView的万能适配器

    转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...

  9. Android Volley

    1.volley简单的介绍: Volley是一个HTTP库,使Android应用程序变得更加容易,最重要的是,网络 得更快. Vollry 提供以下好处: 1.自动调度的网络请求. 2.多个并发的网络 ...

随机推荐

  1. 两种隐藏元素方式【display: none】和【visibility: hidden】的区别

    此随笔的灵感来源于上周的一个面试,在谈到隐藏元素的时候,面试官突然问我[display: none]和[visibility: hidden]的区别,我当时一愣,这俩有区别吗,好像有,但是忘记了啊,因 ...

  2. 训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)

    今天的题目原题是这样的: “ 黑与白:有A.B.C.D.E五人,每人额头上都帖了一张黑或白的纸.五人对坐,每人都可以看到其它人额头上的纸的颜色.五人相互观察后,A说:“我看见有三人额头上帖的是白纸,一 ...

  3. Table显示滚动条

    Table显示滚动条,要先把table放到一个div中,div的长度和宽度要固定,控制overflow属性为scroll <div style="width:700px; height ...

  4. 再次回首 TCP Socket服务器编程

    转载:http://www.cnblogs.com/zc22/archive/2010/06/27/1766007.html ------------------ 前言 --------------- ...

  5. MongoDB的Document操作

    简介 一.Document数据插入 二.Document数据删除 三.Document数据更新 一.Document数据插入 1.插入文档 db.[文档名].insert({BSON数据}) 2.批量 ...

  6. 使用本地光盘安装Microsoft .NET Framework 3.5 for Win8/WinServer2012

    如何使用本地源安装Microsoft .NET Framework 3.5 作为SQL Server 2012的 必要组件,校验组件过程有个小BUG,即使没有安装也通过,但会卡在安装环节(enabli ...

  7. Eclipse 经验之谈(一):快速打war包

    如何快速打一个war包: 具体步骤:  单击右键[在项目名称上]——>Export -->War File . 完成war包的导出了.嘻嘻

  8. [Introduction to programming in Java 笔记] 1.3.9 Factoring integers 素因子分解

    素数 A prime is an integer greater than one whose only positive divisors are one and itself.整数的素因子分解是乘 ...

  9. 嵌入式web server——Goahead启用SSL

    前言 之前已经介绍过如何把goahead移植到linux平台,现在再介绍goahead应用SSL的一些关键要点.因为此博文是继承于上一篇关于移植的博文,有不明白的请先回看.移植篇点这里. 移植环境 g ...

  10. YII 数据库相关操作

    CDbConnection: 一个抽象数据库连接CDbCommand: SQL statementCDbDataReader: 匹配结果集的一行记录CDbTransaction:数据库事务 访问数据库 ...