Интерфейс 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.BodySubscriber<T> |
apply |
Возвращает BodySubscriber, учитывая заданный код состояния ответа и заголовки. |
Подробное описание методов
apply
HttpResponse.BodySubscriber<T> apply(HttpResponse.ResponseInfo responseInfo)
BodySubscriber, учитывая заданный код состояния ответа и заголовки. Этот метод вызывается до фактического чтения байтов тела ответа, и его реализация должна вернуть BodySubscriber для потребления байтов тела ответа. Тело ответа можно проигнорировать, используя один из discarding или replacing.
- Параметры:
-
responseInfo- информация об ответе - Возвращает:
- подписчик тела
© 1993, 2021, 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/17/docs/api/java.net.http/java/net/http/HttpResponse.BodyHandler.html