Spec-Zone.ru › OpenJDK 27

Интерфейс 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, 2026, 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.

Spec-Zone.ru

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