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

Метод timeout

Метод timeout класса HttpRequest задает максимальное время, в течение которого клиент будет ожидать ответ от сервера. Если ответ не будет получен за указанный промежуток времени, будет выброшено исключение HttpTimeoutException. В первый параметр мы передаем длительность таймаута, во второй - единицу измерения времени (например, TimeUnit.SECONDS или TimeUnit.MILLISECONDS).

Метод вызывается у объекта HttpRequest.Builder до вызова метода build. Если таймаут не задан, запрос может ожидать ответа бесконечно долго.

Синтаксис

builder.timeout(duration, unit)

Пример

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

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.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .timeout(Duration.ofSeconds(5)) .GET() .build(); HttpResponse<String> res = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(res.statusCode()); } }

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

200

Пример

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

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

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

200

Пример

Давайте посмотрим, что произойдет, если сервер не успеет ответить за отведенное время:

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

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

"Request timed out"

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

  • класс HttpRequest,
    который представляет HTTP-запрос
  • метод newBuilder,
    который создает построитель запроса
  • метод send,
    который синхронно отправляет запрос
  • метод sendAsync,
    который асинхронно отправляет запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить