Залп длинного HTTPS-запроса никогда не отвечал - PullRequest
5 голосов
/ 24 апреля 2019

Я создал запрос залпа для получения HTTPS бэкэнда.

RequestQueue queue = Volley.newRequestQueue(uiCallback.getContext(),
    new SSLVerification().getHurlStack(uiCallback.getContext()));

JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,
    requestUrl, null, new Response.Listener<JSONObject>() {
    ...
}
req.setRetryPolicy(new DefaultRetryPolicy(3_600_000, 0, 0));

queue.add(req);

В манифесте я добавил интернет-разрешение следующим образом:

<uses-permission android:name="android.permission.INTERNET" />

Все отлично работает с запросами, которые занимают совсем немного времени.

Но если ответ приходит через 3 минуты после запроса, приложение ничего не получает.

На сервере я установил точку останова. Через 3 минуты я позволил бэкенду отправить ответ приложению, но ничего не приходит. Нет успеха, нет ошибки, просто ничего.

Если я сделаю HTTP запрос без SSLVerification, то я получу ответ также через 6 минут. Вместо этого HTTPS запросы более 3 минут просто не хотят работать.

Измените RetryPolicy, чтобы сделать много запросов, это просто обходной путь, и это не вариант.

Ответы [ 3 ]

3 голосов
/ 02 мая 2019

Ответ занимает слишком много времени, чтобы быть принятым в устройстве, и поэтому Volley имеет TimeoutError. Вам необходимо изменить значение времени ожидания по умолчанию, как показано ниже, перед отправкой запроса на ваш сервер.

req.setRetryPolicy(new RetryPolicy() {
    @Override
    public int getCurrentTimeout() {
        return 360000;
    }

    @Override
    public int getCurrentRetryCount() {
        return 5000;
    }

    @Override
    public void retry(VolleyError error) throws VolleyError {

    }
});

queue.add(req);
1 голос
/ 26 апреля 2019

Попробуйте это

req.setRetryPolicy(new DefaultRetryPolicy(90000, 1, 1f));
0 голосов
/ 03 мая 2019

Если я сделаю HTTP-запрос без SSLVerification, я получу ответ также через 6 минут.Вместо этого HTTPS-запросы продолжительностью более 3 минут просто не хотят работать.

Может ли это указывать на то, что у вашего сервера истекло время ожидания?

Иногда Volley не может вернутьсяответ от сервера

...