繁体   English   中英

Volley库Android-从未使用过getHeaders()&从未使用过getParams()

[英]Volley library android - getHeaders() is never used & getParams() is never used

在这里,我想学习为什么getHeaders()getParams()函数没有使用并正常工作。

            private String tag_json_obj = "jobj_req";

            ProgressDialog pDialog = new ProgressDialog(this);

            String tag_json_obj = "json_obj_req";

            String url = "https://api.abc.xyz.com:3021/login";


            pDialog.setMessage("Loading...");
            pDialog.show();



            JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
                    url, obj,
                    new Response.Listener<JSONObject>() {

                        @Override
                        public void onResponse(JSONObject response) {
                            Log.d(AbcLogin.class.getSimpleName(), response.toString());
                            pDialog.hide();
                        }
                    }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(AbcLogin.class.getSimpleName(), "Error: " + error.getMessage());
                    // hide the progress dialog
                    pDialog.hide();
                }
            });

            /**
             * Passing some request headers
             * */

           @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Type", "application/json");
                return headers;
            }

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("user", "abc12");
                params.put("password", "xyzan");

                return params;
            }

            // Adding request to request queue
            AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

我必须在代码中同时传递标头和参数。

StringRequest stringObjectRequest = new StringRequest(httpMethod, url, new Listener<String>() {
           @Override
           public void onResponse(String response) {

           }
       }, new ErrorListener() {

           @Override
           public void onErrorResponse(VolleyError error) {
               if(error != null && error.getMessage() != null)
               {
                   Log.e("Response error", error.getMessage());
               }
           }
       }
       )
       {
           @Override
           protected Map<String, String> getParams() throws AuthFailureError {
               return params;
           }
           @Override
           public Map<String, String> getHeaders() throws AuthFailureError {
               return super.getHeaders();
           }
       };

请检查您的代码是否使用缓存。

如果使用缓存,则仅当缓存过期时才允许执行getHeaders()方法,否则将不执行getHeaders()

请使用以下代码进行凌空缓存。

 public static Cache.Entry parseIgnoreCacheHeaders(NetworkResponse response) {


        long now = System.currentTimeMillis();
        Map<String, String> headers = response.headers;
        long serverDate = 0;
        String serverEtag = null;
        String headerValue;
        headerValue = headers.get("Date");
        if (headerValue != null) {
            serverDate = HttpHeaderParser.parseDateAsEpoch(headerValue);
        }
        serverEtag = headers.get("ETag");

        final long cacheHitButRefreshed = 0; // in 0 millisecond cache will be hit, but also refreshed on background

        final long cacheExpired = 0; // in 0 millisecond this cache entry expires completely

        final long softExpire = now + cacheHitButRefreshed;
        final long ttl = now + cacheExpired;
        Cache.Entry entry = new Cache.Entry();
        entry.data = response.data;
        entry.etag = serverEtag;
        entry.softTtl = softExpire;
        entry.ttl = ttl;
        entry.serverDate = serverDate;
        entry.responseHeaders = headers;
        return entry;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM