Класс 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 |
Возвращает BodyPublisher, который публикует тело запроса, состоящее из объединённых тел запросов, публикуемых последовательностью издателей. |
static HttpRequest.BodyPublisher |
fromPublisher |
Возвращает издатель тела запроса, тело которого извлекается из указанного Flow.Publisher. |
static HttpRequest.BodyPublisher |
fromPublisher |
Возвращает издатель тела запроса, тело которого извлекается из указанного Flow.Publisher. |
static HttpRequest.BodyPublisher |
noBody() |
Издатель тела запроса, который не отправляет тело запроса. |
static HttpRequest.BodyPublisher |
ofByteArray |
Возвращает издатель тела запроса, телом которого является указанный массив байтов. |
static HttpRequest.BodyPublisher |
ofByteArray |
Возвращает издатель тела запроса, телом которого является содержимое указанного массива байтов длиной length байт, начиная с указанного offset. |
static HttpRequest.BodyPublisher |
ofByteArrays |
Издатель тела запроса, который получает данные из Iterable массивов байтов. |
static HttpRequest.BodyPublisher |
ofFile |
Издатель тела запроса, который получает данные из содержимого файла. |
static HttpRequest.BodyPublisher |
ofInputStream |
Издатель тела запроса, который считывает данные из InputStream. |
static HttpRequest.BodyPublisher |
ofString |
Возвращает издатель тела запроса, телом которого является указанная
String, преобразованная с использованием UTF_8. |
static HttpRequest.BodyPublisher |
ofString |
Возвращает издатель тела запроса, телом которого является указанная
String, преобразованная с использованием указанной кодировки. |
Подробное описание методов
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— если путь не найден
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
© 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.BodyPublishers.html