Spec-Zone.ru › OpenJDK 21

Интерфейс HttpResponse.BodyHandler<T>

Type Parameters:
T - тип тела ответа
Enclosing interface:
HttpResponse<T>
Functional Interface:
Это функциональный интерфейс, и поэтому он может использоваться в качестве цели присваивания лямбда-выражения или ссылки на метод.
@FunctionalInterface public static interface HttpResponse.BodyHandler<T>
Обработчик тел ответов. Класс BodyHandlers предоставляет реализации многих распространённых обработчиков тел.

Интерфейс BodyHandler позволяет проверить код ответа и заголовки до получения фактического тела ответа и отвечает за создание объекта BodySubscriber для ответа. Интерфейс BodySubscriber потребляет фактические байты тела ответа и, как правило, преобразует их в тип Java более высокого уровня.

Обработчик BodyHandler — это функция, которая принимает объект ResponseInfo и возвращает объект BodySubscriber. Обработчик BodyHandler вызывается, когда код состояния ответа и заголовки доступны, но перед получением байтов тела ответа.

Следующий пример использует один из предопределённых обработчиков тел предопределённых обработчиков тел, которые всегда обрабатывают тело ответа одинаковым образом (потоковый ввод тела ответа в файл).

  HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://www.foo.com/"))
      .build();

client.sendAsync(request, BodyHandlers.ofFile(Paths.get("/tmp/f")))
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println);
Обратите внимание, что, хотя предопределённые обработчики не проверяют код ответа, код ответа и заголовки всегда можно извлечь из объекта HttpResponse при его возвращении.

Во втором примере функция возвращает разный подписчик в зависимости от кода состояния.

  HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://www.foo.com/"))
      .build();
BodyHandler<Path> bodyHandler = (rspInfo) -> rspInfo.statusCode() == 200
                    ? BodySubscribers.ofFile(Paths.get("/tmp/f"))
                    : BodySubscribers.replacing(Paths.get("/NULL"));
client.sendAsync(request, bodyHandler)
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println);
Since:
11
See Also:
  • HttpResponse.BodyHandlers

Краткое описание методов

Модификатор и тип Метод Описание
HttpResponse.BodySubscriber<T> apply(HttpResponse.ResponseInfo responseInfo)
Возвращает объект BodySubscriber с учётом заданного кода состояния ответа и заголовков.

Подробное описание методов

apply

HttpResponse.BodySubscriber<T> apply(HttpResponse.ResponseInfo responseInfo)
Возвращает объект BodySubscriber с учётом заданного кода состояния ответа и заголовков. Этот метод вызывается до чтения фактических байтов тела ответа, и его реализация должна вернуть объект BodySubscriber для обработки байтов тела ответа.

Тело ответа может быть проигнорировано с помощью одного из методов discarding или replacing.

Parameters:
responseInfo - информация об ответе
Returns:
подписчик на тело ответа

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.net.http/java/net/http/HttpResponse.BodyHandler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API