#android #timeout #okhttp3
#Android #тайм-аут #okhttp3
Вопрос:
У нас есть некоторые проблемы с запросом на повторную попытку okhttp. Согласно нашим журналам отчетов о сбоях, большинство наших клиентов получают слишком много подобных исключений.
На что они жалуются, так это на то, что данные загружаются на сервер, но мобильный телефон по-прежнему отображается как не загруженный. Я немного исследовал и обнаружил, что OkHttp повторяет запросы при сбое соединения, и предполагаю, что это связано с этой темой. Я не могу создать обращение во время отладки приложения. Я попытался подключиться к 10.10.10.1, он получает тайм-аут сокета, но, похоже, okhttp не повторяет этот запрос. Он просто возвращается в эту строку if (!streamAllocation.hasMoreRoutes()) return false;
(okhttp v3.12.1). Я не вижу никаких журналов при повторных попытках в logcat или stetho. Как воспроизвести этот случай? Должен ли OkHttp повторить попытку в этом случае? Поможет ли отключение повторной попытки в этом случае?
Согласно этой статье https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace
Вы не будете получать уведомления об этих беззвучных попытках. Сервер может получать несколько запросов, даже если вы сделали только один запрос.
Ответ №1:
Мне удалось воспроизвести случай на основе стандартного теста okhttp. Вот тест https://gist.github.com/androideveloper/b411d9e90cb8ad430148a906890d0c90 . Он повторяет попытку 2 раза. Журналы доступны, если перехватчик журналов установлен в качестве сетевого перехватчика.