Интерфейс HttpRequest.BodyPublisher
- Все суперинтерфейсы:
Flow.Publisher<ByteBuffer>
- Охватывающий класс:
HttpRequest
public static interface HttpRequest.BodyPublisher extends Flow.Publisher<ByteBuffer>
BodyPublisher преобразует высокоуровневые объекты Java в поток байтовых буферов, пригодных для отправки в теле запроса. Класс BodyPublishers предоставляет реализации многих распространённых издателей. Интерфейс BodyPublisher расширяет Flow.Publisher<ByteBuffer>, а значит, BodyPublisher выступает в роли издателя байтовых буферов.
При отправке запроса с телом HTTP-клиент подписывается на BodyPublisher запроса, чтобы получать поток данных исходящего тела запроса. Обычная семантика Flow.Subscriber и Flow.Publisher реализуется HTTP-клиентом и ожидается от реализаций BodyPublisher. Для каждого исходящего запроса HTTP-клиент создаёт одну подписку Subscriber на BodyPublisher, чтобы получить последовательность байтовых буферов с телом запроса. Экземпляры
ByteBuffer, публикуемые издателем, должны выделяться издателем; после публикации HTTP-клиенту к ним нельзя обращаться. Эти подписки завершаются штатно после полной отправки тела запроса; их можно отменить или досрочно завершить из-за ошибки. Если по какой-либо причине запрос требуется отправить повторно, создаётся новая подписка, которая должна сформировать те же данные, что и раньше.
HTTP-клиент может не подписываться на BodyPublisher, у которого длина содержимого равна 0, поскольку фактически ему нечего публиковать.
- Начиная с:
- 11
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
contentLength() |
Возвращает длину содержимого тела этого запроса. |
Методы, объявленные в интерфейсе Flow.Publisher
subscribe
Подробное описание методов
contentLength
long contentLength()
Этот метод может быть вызван до оформления подписки на издателя. Реализация HTTP-клиента может вызывать этот метод несколько раз; при каждом вызове он ДОЛЖЕН возвращать одно и то же постоянное значение.
- Возвращает:
- длину содержимого тела этого запроса, если она известна
© 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/HttpRequest.BodyPublisher.html