Вы просто должны сделать это
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(15, TimeUnit.SECONDS); // socket timeout
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Имейте в виду , что значение , установленное в setReadTimeout
это один используется в setSoTimeout
на Socket
внутренне вOkHttp
Connection
классе.
Отсутствие тайм-аута для OkHttpClient
эквивалента равнозначно установке значения 0
on setConnectTimeout
или setReadTimeout
приводит к тому, что тайм-аут вообще не будет. Описание можно найти здесь .
Как уже упоминалось @marceloquinta в комментариях setWriteTimeout
также может быть установлен.
Начиная с версии 2.5.0, время ожидания чтения / записи / подключения установлено по умолчанию на 10 секунд, как указано @ChristerNordvik. Это можно увидеть здесь .
Начиная с OkHttp3 теперь можно делать это через Builder, вот так
client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Вы также можете посмотреть рецепт здесь .