Więc mam prośbę Volley PUT:Android wolej DefaultRetryPolicy nie działają zgodnie z przeznaczeniem
private boolean syncCall(JSONObject jsonObject, final VolleyCallback
callback) {
final ProgressDialog progDailog = new ProgressDialog(context);
final Boolean[] success = {false};
progDailog.setMessage("...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(false);
progDailog.show();
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
RequestQueue queue = Volley.newRequestQueue(context, new HurlStack());
final String token = prefs.getString("token", null);
String URL = Constants.getUrlSync();
String param1 = String.valueOf(prefs.getInt("pmp", 1));
String param2 = String.valueOf(prefs.getInt("ei", 1));
URL = URL.replace("[x]", param1);
URL = URL.replace("[y]", param2);
//pegar id pmp e IE corretas
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request
.Method.PUT, URL, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
callback.onSuccess(response + "");
success[0] = true;
progDailog.dismiss();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callback.onFailure(error);
tokenFailure(error);
success[0] = false;
progDailog.dismiss();
}
}) {
@Override
public Map<String, String> getHeaders() throws
AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Token", token);
return headers;
}
};
int socketTimeout = 30000;
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
jsObjRequest.setRetryPolicy(policy);
queue.add(jsObjRequest);
return success[0];
}
Moim problemem jest to, że mogę wysłać bardzo duży JSON
, więc domyślny limit czasu 5 sekund nie wystarczy. Tak więc, próbowałem zwiększyć limit czasu do 30 sekund i mieszać się z DefaultRetryPolicy
, aby zwiększyć liczbę ponownych prób.
Chodzi o to, że zachowuje timeouting
w 5 sekund i nawet nie próbuje ponownie!
Czy muszę mieć detektora lub wywołania zwrotnego dla ponownych prób? Robię coś nie tak z DefaultRetryPolicy
? Proszę pomóc, ten problem doprowadza mnie do szału ...
Tworzę własne zasady. Żądanie nie kończy się (timeout 10, spróbuj 3). Używam żądania łańcucha. –
@ user2362956 Otwórz nowe pytanie z kodem i wyjaśnij swoje próby i wyniki. – herrmartell