Volley简单使用及用法

来源:互联网 发布:深圳赛维网络怎么样 编辑:程序博客网 时间:2024/06/02 18:54

Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnectionHttpClient

Volley它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

Volley特点

自动调度网络请求

多个并发的网络连接

通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致

支持请求优先级

支持取消请求的强大API,可以取消单个请求或多个

易于定制

健壮性:便于正确的更新UI和获取数据

包含调试和追踪工具

 

Volley中的RequestQueue 和 Request

RequestQueue 用来执行请求的请求队列

Request 用来构造一个请求对象

Request对象主要有以下几种类型:

StringRequest 响应的主体为字符串

JsonArrayRequest 发送和接收JSON数组

JsonObjectRequest 发送和接收JSON对象

ImageRequest 发送和接收Image

Method 指定请求方法

 

 

RequestQueue queue = Volley.newRequestQueue(this);//拿到context对象

注意这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。

请求String字符串步骤:

1. 创建一个RequestQueue对象。

2. 创建一个StringRequest对象。

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

 

StringRequest request = newStringRequest(url, listener, errorListener)

StringRequest request = newStringRequest(method, url, listener, errorListener)

1、method:指定请求方式

2、url:请求的url

3、listener:请求成功的接口回调

4、errorListener:请求失败的接口回调

StringRequest request = new StringRequest(Method.GET,"http://blog.csdn.net/chen364567628",

                                   newResponse.Listener<String>() {

                         

                          @Override

                          publicvoid onResponse(String response) {

                                   //请求成功

                          }

                  }, newResponse.ErrorListener() {

 

                          @Override

                          publicvoid onErrorResponse(VolleyError error) {

                                   //请求失败

                          }

                  });

queue.add(request);//添加到请求队列


JsonRequest的用法

类似于StringRequestJsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequestJsonArrayRequest

public abstractclass JsonRequest<T> extends Request<T>

 

JsonObjectRequest jsonRequest = new JsonObjectRequest(url,jsonRequest, listener, errorListener)

JsonObjectRequest jsonRequest = new JsonObjectRequest(method, url,jsonRequest, listener, errorListener)

1、method:指定请求方式

2、url:请求的url

3、jsonRequest:

4、listener:请求成功的接口回调

5、errorListener:请求失败的接口回调

JsonObjectRequest jsonRequest = newJsonObjectRequest(Method.GET, "http://blog.csdn.net/chen364567628",

                                   null,

                                   newResponse.Listener<JSONObject>() {

 

                                            @Override

                                            publicvoid onResponse(JSONObject response) {

 

                                            }

 

                                   },new Response.ErrorListener() {

 

                                            @Override

                                            publicvoid onErrorResponse(VolleyError error) {

 

                                            }

                                   });

                  queue.add(jsonRequest);

同理:JsonArrayRequest arrayRequest = new JsonArrayRequest(url,listener, errorListener)


 ImageRequest的用法

mageRequest imageRequest = newImageRequest(url, listener, maxWidth, maxHeight, decodeConfig,errorListener)

 

1、url:请求的url

2、listener:请求成功的接口回调

3、maxWidth:此位图的最大宽度为,或为零

4、maxHeight:此位图的最大高度为,或为零

5、decodeConfig:格式化位图的格式

6、errorListener:请求失败的接口回调

ImageRequest imageRequest = newImageRequest("http://blog.csdn.net/chen364567628",

                                   newResponse.Listener<Bitmap>() {

 

                                            @Override

                                            publicvoid onResponse(Bitmap response) {

                                                     //TODO Auto-generated method stub

 

                                            }

                                   },0, 0, Config.RGB_565,new Response.ErrorListener() {

 

                                            @Override

                                            publicvoid onErrorResponse(VolleyError error) {

                                                     //TODO Auto-generated method stub

 

                                            }

                                   });

                  queue.add(imageRequest);


0 0
原创粉丝点击