Android Volley框架的基本用法

前段时间在项目中要使用网络通信手段,在网上搜索了一下,选择了Volley框架,结合郭神的博客写了一篇自己的博客,总结一下使用Volley的心得。

一、Volley简介

2013年Google I/O大会上发布一个新的Android网络通讯框架Volley,Volley极大地简化了网络通信的步骤,它设计的目标是用于进行数据量不大但是通信频繁的网络操作,不适用于大数据量的网络通讯(比如下载文件)

二、Volley引入项目

compile ‘com.mcxiaoke.volley:library:1.0.19’

还需要添加权限:

三、Volley的简单使用

Volley有多种请求方法,但是所有的请求方法都需要首先实现一个RequestQueue对象,可以调用如下方法获得

RequestQueue mRequestQueue = Volley.newRequestQueue(context);  

该对象可以缓存所有的HTTP请求,是一个请求队列对象,按照一定的算法并发的送请求.

1.StringRequest的用法:
创建一个StringRequest对象,用于发出一条HTTP请求,方法如下:

StringRequest stringRequest = new StringRequest(url,  
                        new Response.Listener<String>() {  
                            @Override  
                            public void onResponse(String response) {  
                                Log.d("TAG", response);  
                            }  
                        }, new Response.ErrorListener() {  
                            @Override  
                            public void onErrorResponse(VolleyError error) {  
                                Log.e("TAG", error.getMessage(), error);  
                            }  
                        });  

此处new出一个StringRequest对象,需要传入三个参数,第一个参数是目标服务器的url地址(比如”www.asdas.com”),第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调,我们可以在回调里通过Log打印出响应的信息。

最后还需要将这个StringRequest对象添加到RequestQueue对象中:

mRequestQueue.add(stringRequest);  


HTTP的请求通常有两种:POST和GET 刚才介绍的传入三种参数额的方法,默认的就是用GET方法,使用POST方法需要再传入一个参数:

StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener);  

看过了StringRequest请求的方法,那么该如何向服务器提交我们想要上传的数据呢?这就要通过在StringRequest方法的匿名类中重写 getParams()方法,从而设置了POST的参数:

StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener) {  
    @Override  
    protected Map<String, String> getParams() throws AuthFailureError {  
        Map<String, String> map = new HashMap<String, String>();  
        map.put("params1", "value1");  
        map.put("params2", "value2");  
        return map;  
    }  
};  

通过Map集合,使用键值对的方式设置你需要上传的参数,当然还有其他方法可以使用,请读者自行研究。
注意:不同的Request类型,设置POST参数的方法不尽相同,比如在JsonRequest方法中就不能使用上述方法,而需要构造一个Json对象来上传值。

2.JsonRequest的用法:
JsonRequest本身是一个抽象类,无法实现,但是可以实现它的两个子类:JsonObjectRequest和JsonArrayRequest,前者用于请求Json对象,后者用于请求Json数组。具体使用方法与StringRequest类似,但是要注意参数的个数。如下:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null,  
        new Response.Listener() {  
            @Override  
            public void onResponse(JSONObject response) {  
                Log.d("TAG", response.toString());  
            }  
        }, new Response.ErrorListener() {  
            @Override  
            public void onErrorResponse(VolleyError error) {  
                Log.e("TAG", error.getMessage(), error);  
            }  
        });  

传入四个参数的方法默认使用GET方法,四个参数中有三个参数与StringRequest相同,需要注意的是第二个参数,这个参数在JsonObjectRequest方法中可以传入一个Json对象,该对象包含你所要提交到服务器中的数据,另外该参数也可以为null,表示没有要提交的数据。
若要使用POST方法,示例如下:

JsonObjectRequest JsonObjectRequest = new JsonObjectRequest(Method.POST, url, null, listener, errorListener); 

同样,最后需要将JsonObjectReques对象加入RequestQueue对象中。

JsonArrayRequest大同小异,只不过第二个参数出需要传入的是一个JsonArray对象。

你可能感兴趣的:(项目学习笔记)