Ви просто повинні це зробити
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
на 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();
Ви також можете переглянути рецепт тут .