Итак, у меня есть этот запрос Volley PUT:Android залп DefaultRetryPolicy не работают по назначению
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];
}
Моя проблема в том, что я посылаю очень большой JSON
, поэтому таймаут по умолчанию 5 секунд не хватает. Итак, я попытался увеличить тайм-аут до 30 секунд и возиться с DefaultRetryPolicy
, чтобы увеличить количество попыток.
Дело в том, что он держит timeouting
в 5 секунд, и он даже не повторяет попытку!
Должен ли я иметь слушателя или обратный вызов для повторных попыток? Я делаю что-то не так с DefaultRetryPolicy
? Пожалуйста, помогите, эта проблема сводит меня с ума ...
Я создаю свою собственную политику. Запрос не завершается (тайм-аут 10, повторите попытку 3). Я использую запрос строки. –
@ user2362956 Задайте новый вопрос своим кодом и объясните свои попытки и результаты. – herrmartell