Volley框架使用筆記

1.初始化請求隊列 RequestQueue

RequestQueue queue= Volley.newRequestQueue(context);

 

2.StringRequest 網絡請求

Get請求json

StringRequest request = new StringRequest(
              "http://www.baidu.com/",
              new Response.Listener<String>() {
                  @Override
                  public void onResponse(String arg0) {  //收到成功應答後會觸發這裏

                  }
             },
             new Response.ErrorListener() {
                 @Override
                 public void onErrorResponse(VolleyError volleyError) { //出現鏈接錯誤會觸發這裏

               }
          }
);

Post 請求緩存

StringRequest request = new StringRequest(
                Request.Method.POST,
                "http://xxx.xxx.xxx",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {  //設置頭信息
                Map<String, String> map = new HashMap<String, String>();
                map.put("Content-Type", "application/x-www-form-urldecoded");
                return map;
            }
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {  //設置參數
                Map<String, String> map = new HashMap<String, String>();
                map.put("name", "王雪豬");
                map.put("password", "123456");
                return map;
            }
            /**
             * 能夠對返回的reponse作處理, NetworkResponse裏面包括狀態碼,頭信息,內容數據,是否緩存在本地,花費的時間(ms)等內容
             **/
            @Override
            protected Response<String> parseNetworkResponse(
                    NetworkResponse response) {
                // 好比下面的例子是取頭信息裏的cookie數據
                /*
                 * String mCookie; 
                 * for (String s : response.headers.keySet()) {
                 * if (s.contains("Set-Cookie")) { mCookie =
                 * response.headers.get(s); break; } }
                 */
                return super.parseNetworkResponse(response);
            }
            
        };

能夠經過複寫裏面的方法把數據給傳進去服務器

 

3.JsonObjectRequest 基本使用

JsonObjectRequest request = new JsonObjectRequest(  
    "http://xxx.xxx.xx",  
    jsonObject,  
    new Response.Listener<JSONObject>() {  
      @Override  
      public void onResponse(JSONObject jsonObject) {  
      }  
    },  
    new Response.ErrorListener() {  
      @Override  
      public void onErrorResponse(VolleyError volleyError) {  
      }  
    }  
) {  
  @Override  
  public Map<String, String> getHeaders() throws AuthFailureError {  
    Map<String, String> map = new HashMap<String, String>();  
    map.put("Cookie", mCookie);  
    return map;  
  }  
}; 

最後只要再把成功監聽器裏拿到的數據處理就能使用了。
post傳到服務器上時已是json格式,接着在服務器裏處理,返回的也要是json格式的數據,不然會致使數據錯誤(沒法轉化成JSONObject格式)。cookie

4.未完待續

相關文章
相關標籤/搜索