Android Volley double post when have slow request
android, android-volley
Solution
Add the following values to your Request object:
request.setRetryPolicy(new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Here: request is your object of JsonObjectRequest. Change the value of multiplicator according to the DEFAULT TIMEOUT VALUE in DefaultRetryPolicy class in Volley.
You can also set the first argument to 0, like below:
request.setRetryPolicy(new DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Problem
I have a problem with Volley POST request on slow network. Everytime I see `BasicNetwork.logSlowRequests` in my LogCat, my POST request is executed twice or more resulting multiple (2 or more) postings for 1 request. I already set the retry policy to 0, but It doesn't help. This is my LogCat 03-16 01:31:35.674: D/Volley(5984): [19807] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] http://[myserver]/api/places 0xfa7d0c33 NORMAL 1> [lifetime=3824], [size=313], [rc=200], [retryCount=0] 03-16 01:31:35.704: D/Volley(5984): [1] Request.finish: 3853 ms: [ ] http://[myserver]/api/places 0xfa7d0c33 NORMAL 1 This is my code ``` JSONObject body = new JSONObject(); try { body.put(PROTO_BODY_AUTHORIZATION, Sessions.getActiveSession().getToken()); } catch (JSONException e) { e.printStackTrace(); } JsonObjectRequest request = new JsonObjectRequest( Request.Method.POST, context.getResources().getString(R.string.server_address) + "/places", body, callback, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(context, error.getMessage(), Toast.LENGTH_LONG).show(); } } ); request.setRetryPolicy( new DefaultRetryPolicy( DefaultRetryPolicy.DEFAULT_TIMEOUT_MS, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); getRequestQueue().add(request); ``` Please help, I desperately finding solution for this problem.