zoukankan      html  css  js  c++  java
  • 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.未完待续

  • 相关阅读:
    day13
    day11作业
    day12
    小结2
    iOS-常见问题
    iOS-ASIHTTPRequest缓存机制
    iOS-文件断点续传
    iOS-Http : GET : POST
    iOS-通信录
    iOS-汉字排序
  • 原文地址:https://www.cnblogs.com/baokang/p/5010258.html
Copyright © 2011-2022 走看看