Метод connectTimeout
Метод connectTimeout класса HttpClient.Builder
задает максимальное время, в течение которого
клиент будет пытаться установить соединение с
сервером. Если соединение не будет установлено
за указанное время, будет выброшено исключение
HttpConnectTimeoutException. В первый параметр
мы передаем длительность таймаута, во второй -
единицу измерения времени (например, TimeUnit.SECONDS
или TimeUnit.MILLISECONDS). Метод возвращает
текущий объект HttpClient.Builder, что позволяет
выстраивать цепочку вызовов.
Таймаут соединения не влияет на время ожидания
ответа от сервера. Для ограничения времени
выполнения всего запроса используйте метод
timeout класса HttpRequest.Builder.
Синтаксис
builder.connectTimeout(duration, unit)
Пример
Давайте создадим клиент с таймаутом соединения
равным 5 секундам и выведем информацию о нем:
import java.net.http.HttpClient;
import java.time.Duration;
public class Main
{
public static void main(String[] args)
{
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(5))
.build();
System.out.println(client.connectTimeout().get().getSeconds());
}
}
Результат выполнения кода:
5
Пример
Давайте установим таймаут соединения в 500
миллисекунд и попробуем выполнить запрос к
недоступному адресу, чтобы увидеть исключение:
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class Main
{
public static void main(String[] args)
{
try {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofMillis(500))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://10.255.255.1"))
.GET()
.build();
HttpResponse<String> res = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode());
} catch (Exception e) {
System.out.println(e.getClass().getSimpleName());
}
}
}
Результат выполнения кода:
"HttpConnectTimeoutException"
Смотрите также
-
класс
HttpClient.Builder,
который создает экземпляры HttpClient -
метод
build,
который завершает построение клиента -
метод
timeout,
который задает таймаут выполнения запроса -
метод
send,
который отправляет синхронный запрос