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