Volley框架使用笔记

1.初始化请求队列 RequestQueue

RequestQueue queue= Volley.newRequestQueue(context);

2.StringRequest 网络请求

Get请求

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格式)。

4.未完待续

原文地址:https://www.cnblogs.com/baokang/p/5010258.html