Как исправить «Мой запрос выполняется дважды» залпом? - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над мобильным приложением Android с архитектурой типа клиент / сервер.Таким образом, приложение подключается к серверу для зачисления или дебетования учетной записи пользователя.Я использую Android Volley для подключения к серверу.Первая проблема гласит следующее:

** По какой-то причине, когда я запускаю запрос мобильного клиента для дебетования учетной записи, запрос выполняется дважды, в результате чего учетная запись списывается дважды.

Подумав, я подумал, что это, вероятно, связано с интерфейсом RetryPolicy волейбол.Я установил число предложений равным 0, что вызывает следующую проблему.

** Когда я запускаю запрос, через несколько секунд мобильный клиент получает сообщение об ошибке (сервер не ответил), но действие имеетсделано на сервере (аккаунт был списан)

Как решить проблему?Баланс пользователя должен быть списан или зачислен один раз для одного и того же запроса независимо от состояния подключения.

1 Ответ

0 голосов
/ 10 июня 2019

Вы можете установить setRetryPolicy в Volley. DEFAULT_MAX_RETRIES означает, что запрос будет повторяться 1 раз, если есть какие-либо проблемы, поэтому в общем случае он будет выполнен 2 раза.

Так что измените DEFAULT_MAX_RETRIES на 0 в setRetryPolicy

req.setRetryPolicy(new DefaultRetryPolicy(
                DefaultRetryPolicy.DEFAULT_TIMEOUT_MS,
                0, //Change DEFAULT_MAX_RETRIES to 0 for no retry
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

0 Означает, что нет попыток

...