Как мне ответить на POST-запрос, отправленный Volley с телефона, и добавить содержимое на SQL-сервер? - PullRequest
0 голосов
/ 13 ноября 2018

Я создаю приложение, в котором пользователь отправляет некоторые данные через POST-запрос на php-сервер, и он берет данные и добавляет их на SQL-сервер, но я получаю TimeoutError от Volley. Кто-нибудь знает, что может быть причиной этого?

1 Ответ

0 голосов
/ 13 ноября 2018

Для обработки Android Volley Timeout вам нужно использовать RetryPolicy RetryPolicy

Volley provides an easy way to implement your RetryPolicy for your requests.
Volley sets default Socket & ConnectionTImeout to 5 secs for all requests.

RetryPolicy - это интерфейс, в котором вам нужно реализовать свою логику того, как вы хотите повторить конкретный запрос в случае тайм-аута.

Имеет дело с этими тремя параметрами

Timeout - Specifies Socket Timeout in millis per every retry attempt.
Number Of Retries - Number of times retry is attempted.
Back Off Multiplier - A multiplier which is used to determine exponential time set to socket for every retry attempt.

Например Если RetryPolicy создан с этими значениями

Timeout - 3000 ms, Num of Retry Attempts - 2, Back Off Multiplier - 2.0

Попытка повтора 1:

 time = time + (time * Back Off Multiplier);
    time = 3000 + 6000 = 9000ms
    Socket Timeout = time;
    Request dispatched with Socket Timeout of 9 Secs

Попытка повтора 2:

time = time + (time * Back Off Multiplier);
time = 9000 + 18000 = 27000ms
Socket Timeout = time;
Request dispatched with Socket Timeout of 27 Secs

Таким образом, в конце попытки повторной попытки 2, если все еще случается тайм-аут сокета, Volley сгенерирует ошибку TimeoutError в вашем обработчике ответа ошибки интерфейса пользователя.

//Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions. 
//Volley does retry for you if you have specified the policy.
jsonObjRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...