Volley网络请求框架的基本用法

备注: 本笔记是参照了 http://blog.csdn.net/ysh06201418/article/details/46443235  学习之后写下的

简介:  Volley是google官网退出的一种流行的网络请求框架,封装了Android繁琐的httpclient和HttpUrlConnection,使得我们不必要写更多繁琐的代码就能够很好的实现网络通信,同时AsyncHttpClient和ImageLoader集成于一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

Volley的用法:

初始化:

new 一个RequestQueue实例,然后把一些request添加上去即可

private RequestQueue mQueue = Volley.newRequestQueue(this);

1. StringRequest的用法:

 1                 StringRequest request = new StringRequest("http://www.baidu.com", new Response.Listener<String>() {
 2                     @Override
 3                     public void onResponse(String response) {
 4                         requestTextView.setText(response);
 5 
 6                     }
 7                 },new Response.ErrorListener(){
 8                     @Override
 9                     public void onErrorResponse(VolleyError error) {
10 
11                     }
12                 });
13                 mQueue.add(request);

这样的话,一个最基本的HTTP发送与响应的功能就完成了。你会发现根本还没写几行代码就轻易实现了这个功能,主要就是进行了以下三步操作:

1. 创建一个RequestQueue对象。

2. 创建一个StringRequest对象。

3. 将StringRequest对象添加到RequestQueue里面。

上面的是get请求,如果是post请求,那又该怎样实现呢,Volley有自己的实现方法:StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了,具体如下:

 1         StringRequest request = new StringRequest(Request.Method.POST, "", new Response.Listener<String>() {
 2             @Override
 3             public void onResponse(String response) {
 4 
 5             }
 6         }, new Response.ErrorListener() {
 7 
 8 
 9             @Override
10             public void onErrorResponse(VolleyError error) {
11 
12             }
13         }) {
14             @Override
15             protected Map<String, String> getParams() throws AuthFailureError {
16                 return super.getParams();
17             }
18         };
19         mQueue.add(request);

2. JsonRequest的用法

学完了最基本的StringRequest的用法,我们再来进阶学习一下JsonRequest的用法。类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。

 1         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("", null, new Response.Listener<JSONObject>() {
 2             @Override
 3             public void onResponse(JSONObject response) {
 4 
 5             }
 6         }, new Response.ErrorListener() {
 7             @Override
 8             public void onErrorResponse(VolleyError error) {
 9 
10             }
11         });

3.ImageRequest的用法

 1                 ImageRequest ir = new ImageRequest("http://www.dpfile.com/s/res/app-touch-icon-152x152.ee6d0c24fc2de0f9a62b6cc9e6720393.png", new Response.Listener<Bitmap>() {
 2                     @Override
 3                     public void onResponse(Bitmap response) {
 4                         // imageView.setImageBitmap(response);
 5                         ImageView iv = new ImageView(VolleyActivity.this);
 6                         //   iv.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 7                         iv.setImageBitmap(response);
 8                         imageLayout.addView(iv);
 9                     }
10                 }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
11                     @Override
12                     public void onErrorResponse(VolleyError error) {
13 
14                     }
15                 });
16                 mQueue.add(ir);
原文地址:https://www.cnblogs.com/Isaber-blogs/p/5670588.html