Spec-Zone.ru › OpenJDK 25

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

Параметры типа:
T - тип тела ответа
Включающий интерфейс:
HttpResponse<T>
Функциональный интерфейс:
Это функциональный интерфейс, поэтому его можно использовать в качестве целевого типа для лямбда-выражения или ссылки на метод.
@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);
Начиная с:
11
См. также:
  • HttpResponse.BodyHandlers

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

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

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

apply

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

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

Параметры:
responseInfo - сведения об ответе
Возвращает:
подписчик тела

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.net.http/java/net/http/HttpResponse.BodyHandler.html

Spec-Zone.ru

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