GitHubDemo https://github.com/smanikandan14/Volley-demo#handling-error-codesjava
Volley源码 https://github.com/mcxiaoke/android-volley
android
Volley是Android平台上的网络通讯库,能使网络通讯更快,更简单,更健壮github
特色 : Volley特别适合数据量不大可是通讯频繁的场景缓存
Volley提供的功能网络
JSON,图像等的异步下载;框架
网络请求的排序(scheduling)异步
网络请求的优先级处理ide
缓存this
多级别取消请求
和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, Listener<String> listener, ErrorListener errorListener) { // this(Method.GET, url, listener, errorListener); // } // 第一个参数 访问的URL, 第二个参数 响应后返回的结果监听, 第三个参数 响应出错返回的结果监听 StringRequest stringRequest = new StringRequest("http://www.baidu.com", 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); } }); //设置超时 //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<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); } }); //设置超时 //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<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); } }{ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); 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);