Класс 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 |
fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher) |
Возвращает издателя тела запроса, чьё тело извлекается из указанного |
static HttpRequest.BodyPublisher |
fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher,
long contentLength) |
Возвращает издателя тела запроса, чьё тело извлекается из указанного |
static HttpRequest.BodyPublisher |
noBody() |
Издатель тела запроса, который не отправляет тело запроса. |
static HttpRequest.BodyPublisher |
ofByteArray(byte[] buf) |
Возвращает издателя тела запроса, чьё тело — заданный массив байтов. |
static HttpRequest.BodyPublisher |
ofByteArray(byte[] buf,
int offset,
int length) |
Возвращает издателя тела запроса, чьё тело — содержимое заданного массива байтов из |
static HttpRequest.BodyPublisher |
ofByteArrays(Iterable<byte[]> iter) |
Издатель тела запроса, который получает данные из |
static HttpRequest.BodyPublisher |
ofFile(Path path) |
Издатель тела запроса, который получает данные из содержимого файла. |
static HttpRequest.BodyPublisher |
ofInputStream(Supplier<? extends InputStream> streamSupplier) |
Издатель тела запроса, который считывает данные из |
static HttpRequest.BodyPublisher |
ofString(String body) |
Возвращает издателя тела запроса, чьё тело — заданная |
static HttpRequest.BodyPublisher |
ofString(String s,
Charset charset) |
Возвращает издателя тела запроса, чьё тело — заданная |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы
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- поставщик открытых потоков ввода-вывода - Возвращает:
- 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
Издатель тела запроса, который получает данные из содержимого файла.
Проверки разрешений менеджера безопасности выполняются в этом методе-фабрике при создании BodyPublisher. Следует позаботиться о том, чтобы BodyPublisher не делился с небезопасным кодом.
- Параметры:
-
path- путь к файлу, содержащему тело - Возвращает:
- BodyPublisher
- Исключение:
-
FileNotFoundException- если путь не найден -
SecurityException- если установлен менеджер безопасности и он запрещаетread accessдля данного файла
ofByteArrays
public static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
Издатель тела запроса, который получает данные из Iterable массивов байтов. Предоставляется Iterable, который предоставляет экземпляры Iterator. Каждая попытка отправить запрос приводит к одному вызову Iterable.
- Параметры:
-
iter- Iterable массивов байтов - Возвращает:
- BodyPublisher
noBody
public static HttpRequest.BodyPublisher noBody()
Издатель тела запроса, который не отправляет тело запроса.
- Возвращает:
- BodyPublisher, который завершается немедленно и не отправляет тело запроса.
© 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/HttpRequest.BodyPublishers.html