Spec-Zone.ru › OpenJDK 27

Класс HttpRequest.BodyPublishers

java.lang.Object
java.net.http.HttpRequest.BodyPublishers
Внешний класс:
HttpRequest
public static class HttpRequest.BodyPublishers extends Object
Реализации BodyPublisher, реализующие различные полезные поставщики данных, например поставщики, публикующие тело запроса из строки или файла.

Ниже приведены примеры использования предопределённых поставщиков тела запроса для преобразования распространённых высокоуровневых объектов Java в поток данных, пригодный для отправки в качестве тела запроса:

// Request body from a String
HttpRequest request = HttpRequest.newBuilder()
     .uri(URI.create("https://foo.com/"))
     .header("Content-Type", "text/plain; charset=UTF-8")
     .POST(BodyPublishers.ofString("some body text"))
     .build();
// Request body from a File
HttpRequest request = HttpRequest.newBuilder()
     .uri(URI.create("https://foo.com/"))
     .header("Content-Type", "application/json")
     .POST(BodyPublishers.ofFile(Paths.get("file.json")))
     .build();
// Request body from a byte array
HttpRequest request = HttpRequest.newBuilder()
     .uri(URI.create("https://foo.com/"))
     .POST(BodyPublishers.ofByteArray(new byte[] { ... }))
     .build();
Начиная с:
11

Краткое описание методов

Модификатор и тип Метод Описание
static HttpRequest.BodyPublisher concat(HttpRequest.BodyPublisher... publishers)
Возвращает BodyPublisher, который публикует тело запроса, состоящее из конкатенации тел запросов, публикуемых последовательностью поставщиков.
static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher)
Возвращает поставщик тела запроса, тело которого извлекается из указанного Flow.Publisher.
static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)
Возвращает поставщик тела запроса, тело которого извлекается из указанного Flow.Publisher.
static HttpRequest.BodyPublisher noBody()
Поставщик тела запроса, который не отправляет тело запроса.
static HttpRequest.BodyPublisher ofByteArray(byte[] buf)
Возвращает поставщик тела запроса, телом которого является указанный массив байтов.
static HttpRequest.BodyPublisher ofByteArray(byte[] buf, int offset, int length)
Возвращает поставщик тела запроса, телом которого является содержимое указанного массива байтов размером length байт, начиная с указанного offset.
static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
Поставщик тела запроса, который получает данные из Iterable массивов байтов.
static HttpRequest.BodyPublisher ofFile(Path path)
Поставщик тела запроса, который получает данные из содержимого файла.
static HttpRequest.BodyPublisher ofFileChannel(FileChannel channel, long offset, long length)
Возвращает поставщик тела запроса, телом которого являются length байты содержимого, считанные из предоставленного файла channel, начиная с указанного offset.
static HttpRequest.BodyPublisher ofInputStream(Supplier<? extends InputStream> streamSupplier)
Поставщик тела запроса, считывающий данные из InputStream.
static HttpRequest.BodyPublisher ofString(String body)
Возвращает поставщик тела запроса, телом которого является указанная String, преобразованная с использованием кодировки UTF_8.
static HttpRequest.BodyPublisher ofString(String s, Charset charset)
Возвращает поставщик тела запроса, телом которого является указанная String, преобразованная с использованием указанной кодировки.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения заданного интервала реального времени.

Подробное описание методов

fromPublisher

public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher)
Возвращает поставщик тела запроса, тело которого извлекается из указанного Flow.Publisher. Длина содержимого возвращённого поставщика тела запроса неизвестна.
Примечание API:
Этот метод можно использовать в качестве адаптера между BodyPublisher и Flow.Publisher, когда объём тела запроса, который будет опубликован поставщиком, неизвестен.
Параметры:
publisher — поставщик, отвечающий за публикацию тела запроса
Возвращает:
BodyPublisher

fromPublisher

public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)
Возвращает поставщик тела запроса, тело которого извлекается из указанного Flow.Publisher. Длина содержимого возвращённого поставщика тела запроса равна указанной длине.

Указанная contentLength — положительное число, представляющее точное количество байтов, которое publisher должен опубликовать.

Примечание API:
Этот метод можно использовать в качестве адаптера между BodyPublisher и Flow.Publisher, когда объём тела запроса, который будет опубликован поставщиком, известен.
Параметры:
publisher — поставщик, отвечающий за публикацию тела запроса
contentLength — положительное число, представляющее точное количество байтов, которое поставщик опубликует
Возвращает:
BodyPublisher
Вызывает:
IllegalArgumentException — если длина содержимого не является положительной

ofString

public static HttpRequest.BodyPublisher ofString(String body)
Возвращает поставщик тела запроса, телом которого является указанная String, преобразованная с использованием кодировки UTF_8.
Параметры:
body — строка, содержащая тело запроса
Возвращает:
BodyPublisher

ofString

public static HttpRequest.BodyPublisher ofString(String s, Charset charset)
Возвращает поставщик тела запроса, телом которого является указанная String, преобразованная с использованием указанной кодировки.
Параметры:
s — строка, содержащая тело запроса
charset — кодировка для преобразования строки в байты
Возвращает:
BodyPublisher

ofInputStream

public static HttpRequest.BodyPublisher ofInputStream(Supplier<? extends InputStream> streamSupplier)
Поставщик тела запроса, считывающий данные из InputStream. В случае необходимости повторной отправки запроса используется Supplier для InputStream, поскольку содержимое не буферизуется. При последующих попытках Supplier может возвращать null, и в этом случае запрос завершится с ошибкой.
Параметры:
streamSupplier — Supplier открытых InputStream
Возвращает:
BodyPublisher

ofByteArray

public static HttpRequest.BodyPublisher ofByteArray(byte[] buf)
Возвращает поставщик тела запроса, телом которого является указанный массив байтов.
Параметры:
buf — массив байтов, содержащий тело запроса
Возвращает:
BodyPublisher

ofByteArray

public static HttpRequest.BodyPublisher ofByteArray(byte[] buf, int offset, int length)
Возвращает поставщик тела запроса, телом которого является содержимое указанного массива байтов размером length байт, начиная с указанного offset.
Параметры:
buf — массив байтов, содержащий тело запроса
offset — смещение первого байта
length — количество используемых байтов
Возвращает:
BodyPublisher
Вызывает:
IndexOutOfBoundsException — если указанный диапазон выходит за допустимые границы

ofFile

public static HttpRequest.BodyPublisher ofFile(Path path) throws FileNotFoundException
Поставщик тела запроса, который получает данные из содержимого файла.
Параметры:
path — путь к файлу, содержащему тело запроса
Возвращает:
BodyPublisher
Вызывает:
FileNotFoundException — если файл по указанному пути не найден

ofFileChannel

public static HttpRequest.BodyPublisher ofFileChannel(FileChannel channel, long offset, long length) throws IOException
Возвращает поставщик тела запроса, телом которого являются length байты содержимого, считанные из предоставленного файлового channel, начиная с указанного offset.

Этот метод и возвращённый BodyPublisher не изменяют позицию channel и не закрывают channel. Предполагается, что вызывающий код закроет channel, когда он больше не понадобится.

Примечание API:
Этот метод можно использовать для публикации в качестве тела запроса только части файла или для одновременной публикации разных частей файла. Типичный вариант использования — публикация разных частей файла путём создания одного экземпляра FileChannel, а затем отправки нескольких параллельных HttpRequest, каждый из которых использует новый ofFileChannel BodyPublisher, созданный из того же канала, с другим, обычно не перекрывающимся диапазоном байтов, заданным смещением и длиной.
Параметры:
channel — файловый канал
offset — смещение первого байта
length — количество байтов для чтения из файлового канала
Возвращает:
поставщик тела запроса, телом которого являются length байты содержимого, считанные из предоставленного файлового channel, начиная с указанного offset
Вызывает:
IndexOutOfBoundsException — если указанный диапазон байтов выходит за допустимые границы относительно размера файла, на который ссылается канал
IOException — если не удаётся определить размер канала или channel закрыт
Начиная с:
26

ofByteArrays

public static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
Поставщик тела запроса, который получает данные из Iterable массивов байтов. Предоставляется Iterable, возвращающий экземпляры Iterator. Каждая попытка отправить запрос приводит к одному вызову Iterable.
Параметры:
iter — Iterable массивов байтов
Возвращает:
BodyPublisher

noBody

public static HttpRequest.BodyPublisher noBody()
Поставщик тела запроса, который не отправляет тело запроса.
Возвращает:
BodyPublisher, который немедленно завершает работу и не отправляет тело запроса.

concat

public static HttpRequest.BodyPublisher concat(HttpRequest.BodyPublisher... publishers)
Возвращает BodyPublisher, который публикует тело запроса, состоящее из конкатенации тел запросов, публикуемых последовательностью поставщиков.

Если последовательность пуста, возвращается пустой поставщик. Если последовательность содержит один элемент, возвращается этот поставщик. В противном случае возвращается поставщик-конкатенатор.

Тело запроса, публикуемое поставщиком-конкатенатором, логически эквивалентно телу запроса, которое было бы опубликовано при конкатенации всех байтов каждого поставщика по порядку.

Подписка на каждый поставщик выполняется поочерёдно и лениво, пока не будут опубликованы все байты тела, не произойдёт ошибка или подписка на поставщика-конкатенатора не будет отменена. На поставщика-конкатенатора можно подписаться несколько раз, что, в свою очередь, может привести к многократной подписке на поставщиков в последовательности.

Длина содержимого поставщика-конкатенатора известна только в том случае, если известна длина содержимого всех поставщиков в последовательности. Значение contentLength, сообщаемое поставщиком-конкатенатором, вычисляется следующим образом:

  • Если какой-либо из поставщиков сообщает неизвестную длину содержимого или если сумма известных длин содержимого превышает Long.MAX_VALUE, результирующая длина содержимого считается неизвестной.
  • В противном случае результирующая длина содержимого равна сумме известных длин содержимого — числу в диапазоне от 0 до Long.MAX_VALUE включительно.
Примечание по реализации:
Если подписка на поставщика-конкатенатора отменена или при публикации байтов происходит ошибка, подписка может быть оформлена не на все поставщики в последовательности.
Параметры:
publishers — последовательность поставщиков.
Возвращает:
Агрегирующий поставщик, который публикует тело запроса, логически эквивалентное конкатенации всех байтов, опубликованных каждым поставщиком в последовательности.
Начиная с:
16

Сообщить об ошибке или предложить улучшение
Дополнительные справочные сведения по 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