簡體   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