Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
参考文档:
http://www.2cto.com/kf/201504/388742.html
推荐:http://blog.csdn.net/richie0006/article/details/47069635
获取到一个RequestQueue对象,可以调用如下方法获取到:
1 RequestQueue mQueue = Volley.newRequestQueue(context);
注意这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。
基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。
接下来为了要发出一条HTTP请求,我们还需要创建一个StringRequest对象,如下所示:
1 public void volleyGet(){ 2 3 StringRequest request=new StringRequest(Method.GET, "url", new Listener<String>() { 4 5 @Override 6 7 public void onResponse(String arg0) { 8 9 // TODO Auto-generated method stub 10 11 } 12 13 }, new Response.ErrorListener() { 14 15 16 17 @Override 18 19 public void onErrorResponse(VolleyError arg0) { 20 21 // TODO Auto-generated method stub 22 23 } 24 25 }); 26 27 MyApplication.getHttpQueue().add(request); 28 29 } 30 31 32 33 public void volleyPost(String... param) { 34 35 HashMap<String, String> hm = new HashMap<String, String>(); 36 37 hm.put("requestPurpose", "1"); 38 39 hm.put("username", param[0]); 40 41 hm.put("userpassword", param[1]); 42 43 NormalPostRequest request = new NormalPostRequest("url", new Response.Listener<JSONObject>() { 44 45 @Override 46 47 public void onResponse(JSONObject arg0) { 48 49 // TODO Auto-generated method stub 50 51 } 52 53 }, new Response.ErrorListener() { 54 55 @Override 56 57 public void onErrorResponse(VolleyError arg0) { 58 59 // TODO Auto-generated method stub 60 61 } 62 63 }, hm); 64 65 MyApplication.getHttpQueue().add(request); 66 67 }
. JsonRequest的用法
学完了最基本的StringRequest的用法,我们再来进阶学习一下JsonRequest的用法。类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。
至于它们的用法也基本上没有什么特殊之处,先new出一个JsonObjectRequest对象,如下所示:
1 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null, 2 new Response.Listener<JSONObject>() { 3 @Override 4 public void onResponse(JSONObject response) { 5 Log.d("TAG", response.toString()); 6 } 7 }, new Response.ErrorListener() { 8 @Override 9 public void onErrorResponse(VolleyError error) { 10 Log.e("TAG", error.getMessage(), error); 11 } 12 });