Così, ho questa richiesta Volley PUT:Android volley DefaultRetryPolicy non funzionare come previsto
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];
}
mio problema è che io mando un grande JSON
, in modo che il timeout predefinito di 5 secondi non è sufficiente. Così, ho provato ad aumentare il timeout a 30 secondi e a scherzare con lo DefaultRetryPolicy
per aumentare il numero di tentativi.
Il fatto è che mantiene timeouting
in 5 secondi e non riprovare nemmeno una volta!
Devo avere un listener o un callback per i tentativi? Sto facendo qualcosa di sbagliato con lo DefaultRetryPolicy
? Per favore aiutatemi, questo problema mi sta facendo impazzire ...
Ho creato la mia politica. La richiesta non termina (timeout 10, riprova 3). Io uso la richiesta di stringhe. –
@ user2362956 Apri una nuova domanda con il tuo codice e spiegando i tuoi tentativi e risultati, per favore. – herrmartell