Интерфейс HttpResponse.PushPromiseHandler<T>
- Параметры типа:
T- тип тела ответа на push-обещание
- Охватывающий интерфейс:
HttpResponse<T>
public static interface HttpResponse.PushPromiseHandler<T>
Push-обещание — это синтетический запрос, отправляемый сервером HTTP/2 при обработке исходного запроса, отправленного клиентом. Сервер определил, возможно, проанализировав исходный запрос, что клиенту, вероятно, понадобится обещанный ресурс, и поэтому отправляет клиенту синтетический push-запрос в виде push-обещания. Клиент может принять или отклонить запрос push-обещания.
Запрос push-обещания может быть получен до момента полного получения тела ответа на исходный запрос, отправленный клиентом. Однако доставка ответа на push-обещание не синхронизируется с доставкой ответа на исходный запрос, отправленный клиентом.
- Начиная с:
- 11
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
applyPushPromise |
Уведомление о входящем push-обещании. |
static <T> HttpResponse.PushPromiseHandler |
of |
Возвращает обработчик push-обещаний, который добавляет push-обещания и соответствующие им ответы в указанную карту. |
Подробное описание методов
applyPushPromise
void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>, CompletableFuture<HttpResponse<T>>> acceptor)
Этот метод вызывается для каждого полученного push-обещания до момента полного получения тела ответа на исходный запрос, отправленный клиентом.
Push-обещание принимается путем вызова указанной функции acceptor. Функции acceptor необходимо передать ненулевой объект BodyHandler, который будет использоваться для обработки тела ответа на обещание. Функция-приемник возвращает
CompletableFuture, который завершается ответом на обещание.
Если функцию acceptor не удается успешно вызвать, push-обещание отклоняется. Функция acceptor выбрасывает IllegalStateException при повторном вызове.
- Параметры:
-
initiatingRequest- исходный запрос, отправленный клиентом -
pushPromiseRequest- синтетический push-запрос -
acceptor- функция-приемник, которую необходимо успешно вызвать, чтобы принять push-обещание
of
static <T> HttpResponse.PushPromiseHandler<T> of(Function<HttpRequest, HttpResponse.BodyHandler<T>> pushPromiseHandler, ConcurrentMap<HttpRequest, CompletableFuture<HttpResponse<T>>> pushPromisesMap)
Для каждого принятого push-обещания в указанную карту добавляется запись. Ключом записи является push-запрос, а значением — CompletableFuture, завершающийся ответом, соответствующим push-запросу, указанному в качестве ключа. Push-запрос отклоняется / отменяется, если в карте уже есть запись с ключом, равным ему. Push-запрос отклоняется / отменяется, если его источник отличается от источника исходного запроса.
Записи добавляются в указанную карту при первой практической возможности после получения и принятия push-обещания. Это позволяет коду, использующему такую карту в качестве кэша, определить, отправил ли сервер push-обещание, и избежать, возможно, ненужных запросов.
Доставка ответа на push-обещание не синхронизируется с доставкой ответа на исходный запрос, отправленный клиентом. Однако после полного получения тела ответа на исходный запрос, отправленный клиентом, карта гарантированно будет полностью заполнена, то есть новые записи добавляться не будут. Отдельные объекты CompletableFutures, содержащиеся в карте, к этому моменту могут быть как завершены, так и не завершены.
- Параметры типа:
T- тип тела ответа на push-обещание- Параметры:
-
pushPromiseHandler- обработчик тела, используемый для push-обещаний -
pushPromisesMap- карта для накопления push-обещаний - Возвращает:
- обработчик push-обещаний
© 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.PushPromiseHandler.html