Я разрабатываю приложение, используя библиотеку OkHttp, и моя проблема в том, что я не могу найти, как установить время ожидания подключения и время сокета.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Ответы:
Вы просто должны сделать это
Имейте в виду , что значение , установленное в
setReadTimeout
это один используется вsetSoTimeout
наSocket
внутренне вOkHttp
Connection
классе.Отсутствие тайм-аута для
OkHttpClient
эквивалента равнозначно установке значения0
onsetConnectTimeout
илиsetReadTimeout
приводит к тому, что тайм-аут вообще не будет. Описание можно найти здесь .Как уже упоминалось @marceloquinta в комментариях
setWriteTimeout
также может быть установлен.Начиная с версии 2.5.0, время ожидания чтения / записи / подключения установлено по умолчанию на 10 секунд, как указано @ChristerNordvik. Это можно увидеть здесь .
Начиная с OkHttp3 теперь можно делать это через Builder, вот так
Вы также можете посмотреть рецепт здесь .
источник
Для охттп3 это немного изменилось.
Теперь вы устанавливаете время, используя компоновщик, а не сеттеры, например так:
Дополнительную информацию можно найти в их вики: https://github.com/square/okhttp/blob/b3dcb9b1871325248fba917458658628c44ce8a3/docs/recipes.md#timeouts-kt-java
источник
Для Retrofit Retrofit: 2.0.0-бета4 код выглядит следующим образом
источник
Для Retrofit 2.0.0-beta1 или beta2 код выглядит следующим образом
источник
источник
Теперь это изменилось. Заменить
.Builder()
на.newBuilder()
Начиная с : 3.9.0 код выглядит следующим образом:
источник
Охтп версия:
3.11.0
или вышеиз исходника охтпп
unit
может быть любое значение нижепример кода
обновленный
Я добавил новый API в ohttp из версии
3.12.0
, вы можете установить таймаут так:ПРИМЕЧАНИЕ. Для этого требуется API 26+, поэтому, если вы поддерживаете более старые версии Android, продолжайте использовать
(5, TimeUnit.SECONDS)
.источник
вот так:
источник
это сработало для меня ... с https://github.com/square/okhttp/issues/3553
источник
Если вы хотите настроить конфигурацию, то используйте приведенную ниже методологию создания OKhttpclient, а затем добавьте компоновщик поверх нее.
источник
Вы можете установить тайм-аут вызова, чтобы охватить весь цикл от разрешения DNS, соединения, записи тела запроса, обработки сервера и чтения тела ответа.
источник