РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1097 of 1163 menu

Метод connectTimeout

Метод connectTimeout класса HttpClient задает максимальное время, в течение которого клиент будет пытаться установить соединение с сервером. Если соединение не будет установлено за указанный промежуток времени, будет выброшено исключение HttpConnectTimeoutException. В параметр метода мы передаем объект Duration, представляющий длительность таймаута. Метод возвращает новый объект HttpClient с измененной настройкой.

Метод доступен только через HttpClient.Builder, так как класс HttpClient является неизменяемым. Это означает, что для установки таймаута подключения необходимо сначала создать билдер, вызвать метод connectTimeout, а затем собрать клиент с помощью метода build.

Синтаксис

HttpClient.Builder.connectTimeout(Duration duration)

Пример

Давайте создадим HttpClient с таймаутом подключения равным 5 секундам и выполним GET-запрос:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; public class Main { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(5)) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(response.statusCode()); } }

Результат выполнения кода:

200

Пример

Давайте установим таймаут подключения равным 500 миллисекундам. Если сервер не ответит за это время, будет выброшено исключение:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpConnectTimeoutException; import java.time.Duration; public class Main { public static void main(String[] args) { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofMillis(500)) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .GET() .build(); try { HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(response.statusCode()); } catch (HttpConnectTimeoutException e) { System.out.println("Connection timed out"); } catch (Exception e) { System.out.println("Other error"); } } }

Результат выполнения кода (при превышении таймаута):

"Connection timed out"

Пример

Давайте создадим клиент с таймаутом подключения равным 10 секундам и проверим его настройки через метод connectTimeout:

import java.net.http.HttpClient; import java.time.Duration; import java.util.Optional; public class Main { public static void main(String[] args) { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build(); Optional<Duration> timeout = client.connectTimeout(); System.out.println(timeout.get().getSeconds()); } }

Результат выполнения кода:

10

Смотрите также

  • класс HttpClient,
    который используется для отправки HTTP-запросов
  • метод connectTimeout,
    который устанавливает таймаут подключения в билдере
  • метод build,
    который создает объект HttpClient
  • метод send,
    который отправляет синхронный HTTP-запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить