Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮
特点 : Volley特别适合数据量不大但是通信频繁的场景
Volley提供的功能
JSON,图像等的异步下载;
网络请求的排序(scheduling)
网络请求的优先级处理
缓存
多级别取消请求
和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
git clone https://android.googlesource.com/platform/frameworks/volley
网络请求的应用
1. 发起一条基本的HTTP请求
StringRequest(Get请求,无请求参数)
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());// 默认是Get方式 可以在源码 StringRequest 类中的构造方法中找到 如下// public StringRequest(String url, Listenerlistener, ErrorListener errorListener) {// this(Method.GET, url, listener, errorListener);// }// 第一个参数 访问的URL, 第二个参数 响应后返回的结果监听, 第三个参数 响应出错返回的结果监听StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener () { @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); } });//设置超时//DefaultRetryPolicy 中第一个参数 超时时间, 第二个参数最多请求次数, 第三个参数是一个乘数因子,//比如 超时时间是5s,乘数因子是2, 下次请求的时间就是10s后请求stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2f));// 设置Tag值 可以在界面被销毁时 用来移除该网络请求stringRequest.setTag(MYGET_TAG);mQueue.add(stringRequest);
StringRequest(Post请求,无请求参数)
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());// 第一个参数 请求方式, 第二个参数 访问的URL, 第三个参数 响应后返回的结果监听, // 第四个参数 响应出错返回的结果监听StringRequest stringRequest = new StringRequest(Method.POST,"http://www.baidu.com", new Response.Listener() { @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); } });//设置超时//DefaultRetryPolicy 中第一个参数 超时时间, 第二个参数最多请求次数, 第三个参数是一个乘数因子,//比如 超时时间是5s,乘数因子是2, 下次请求的时间就是10s后请求stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2f));// 设置Tag值 可以在界面被销毁时 用来移除该网络请求stringRequest.setTag(MYGET_TAG);mQueue.add(stringRequest);
StringRequest(Post请求,有请求参数)
//这里的参数是Map形式的RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());// 第一个参数 请求方式, 第二个参数 访问的URL, 第三个参数 响应后返回的结果监听, // 第四个参数 响应出错返回的结果监听StringRequest stringRequest = new StringRequest(Method.POST,"http://www.baidu.com", new Response.Listener() { @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); } }{ @Override protected Map getParams() throws AuthFailureError { Map map = new HashMap (); map.put("param1", "0"); map.put("param2", "5"); return map; } });//设置超时//DefaultRetryPolicy 中第一个参数 超时时间, 第二个参数最多请求次数, 第三个参数是一个乘数因子,//比如 超时时间是5s,乘数因子是2, 下次请求的时间就是10s后请求stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2f));// 设置Tag值 可以在界面被销毁时 用来移除该网络请求stringRequest.setTag(MYGET_TAG);mQueue.add(stringRequest);