How to prevent Volley request from retrying?

后端 未结 4 930
春和景丽
春和景丽 2020-12-13 18:54

I post a JsonRequest to a server. The server is slow and Volley tends to make multiple calls to the slow server because it didn\'t get a response from the first request (sin

4条回答
  •  一整个雨季
    2020-12-13 19:23

    Try this,

    // remove caching
            jsObjRequest.setShouldCache(false);
            // Wait 30 seconds and don't retry more than once
            jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(0, 0,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    

    Method call form task

    public void callWebService(JSONObject jsonRequest) {
    
        JsonObjectRequest jsObjRequest = new JsonObjectRequest(
                Request.Method.POST, url + pageurl, jsonRequest,
                new Response.Listener() {
    
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        sendResponse(jsonObject);
    
                    }
                }, new Response.ErrorListener() {
    
                    @Override
                    public void onErrorResponse(VolleyError error) {
    
                        callBack.onError(error);
                        try {
                            if (progressDialog != null) {
                                progressDialog.dismiss();
                                progressDialog = null;
                            }
                        } catch (Exception e) {
                            Helper.customPrintStackTrace(e);
                        }
    
                    }
                }
    
        ) {
    
            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }
    
            @Override
            public Map getHeaders() throws AuthFailureError {
    
                Map params = new HashMap();
    
                params.put(WebConfig.WebParams.APIKEY, Helper
                        .getStringValuefromPrefs(context,
                                SharedPreferencesKey.PREF_APIKEY));
                params.put(WebConfig.WebParams.APITOKEN, Helper
                        .getStringValuefromPrefs(context,
                                SharedPreferencesKey.PREF_APITOKEN));
    
                if (!Helper.getStringValuefromPrefs(context,
                        SharedPreferencesKey.PREF_USERID).equals("")) {
    
                    params.put(WebConfig.WebParams.USER_ID, Helper
                            .getStringValuefromPrefs(context,
                                    SharedPreferencesKey.PREF_USERID));
    
                } else {
                    params.put(WebConfig.WebParams.USER_ID, "0");
                }
    
                return params;
            }
    
        };
    
        // remove caching
        jsObjRequest.setShouldCache(false);
        // Wait 30 seconds and don't retry more than once
        jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(0, 0,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        // Access the RequestQueue through your singleton class.
        VolleySingleton.getInstance(context).addToRequestQueue(jsObjRequest);
    
        if (showDefultProcess) {
    
            progressDialog.show();
        }
    
    }
    

提交回复
热议问题