Volley 基本用法

GitHubDemo  https://github.com/smanikandan14/Volley-demo#handling-error-codesjava

Volley源碼   https://github.com/mcxiaoke/android-volley
android

Google IO2013網絡框架Volley 演講PDF http://download.csdn.net/source/preview/5686041/3f5f45640aca1b5c0cdc98fdafbac93dgit

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);
相關文章
相關標籤/搜索