Вы просто должны сделать это
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эквивалента равнозначно установке значения 0on 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();
Вы также можете посмотреть рецепт здесь .