Я работаю над проектом Android, который использует Volley для асинхронных запросов и обработки изображений. Как-то запрос дважды ударяет по серверу, даже когда у меня установлена политика повтора на 0. Я попытался переопределить значения из объекта DefaultRetryPolicy без успеха. Вот пример кода:
Запрос:
@Override
public void gravarVendaMobile(final Usuario usuarioAutenticado, final AsyncCallback<String> callback) {
obterParametrosDeInicializacao().done(new DoneCallback<ParametrosDeInicializacao>() {
@Override
public void onDone(final ParametrosDeInicializacao param) {
requestQueue.add(setDefaultRetryPolicy(new StringRequest(
Method.POST,
urlPara(GRAVAR_VENDA_MOBILE, usuarioAutenticado.getFilial(), usuarioAutenticado.getCodigo()),
listener(callback),
//errorListener(R.string.could_not_load_produtos, callback)
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callback.onError(new MessageCodeException(error.networkResponse.statusCode, error));
}
}
) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Encoding", "UTF-8");
headers.put("Accept", "application/json");
headers.put("Content-type", "application/json; charset=UTF-8");
return headers;
}
}));
}
});
}
Политика повтора:
private Request<?> setDefaultRetryPolicy(Request<?> request) {
request.setRetryPolicy(new DefaultRetryPolicy(30000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
return request;
}
В принципе, я хочу установить тайм-аут на 30 секунд с помощью 0 попыток.
Если я увеличиваю количество повторений, он работает так, как ожидалось, но если я устанавливаю его на 0, он делает 2 запроса.
Вам нужна помощь здесь.
Edit
Мне удалось решить мою проблему, установив для свойства keep-alive значение false внутри android. например:
System.setProperty("http.keepAlive", "false");
Я добавил эту строку кода внутри класса, где я импортирую requestqueue и делаю запросы.
Кроме того, проверьте, есть ли у сервера заголовок keep-alive.
Этот пост помог решить проблему.