クラスHttpRequest.BodyPublishers
java.lang.Object
java.net.http.HttpRequest.BodyPublishers
- 含まれているクラス:
HttpRequest
public static class HttpRequest.BodyPublishers extends Object
Stringからのリクエスト本文の公開やファイルからの公開など、各種の便利なパブリッシャを実装する
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.BodyPublisherconcat(HttpRequest.BodyPublisher... publishers) パブリッシャのシーケンスによってパブリッシュされたリクエスト本文の連結で構成されるリクエスト本文をパブリッシュするBodyPublisherを返します。static HttpRequest.BodyPublisherfromPublisher(Flow.Publisher<? extends ByteBuffer> publisher) 指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。static HttpRequest.BodyPublisherfromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength) 指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。static HttpRequest.BodyPublishernoBody()リクエスト本文を送信しないリクエスト本文パブリッシャ。static HttpRequest.BodyPublisherofByteArray(byte[] buf) 本文が指定されたバイト配列であるリクエスト本文パブリッシャを返します。static HttpRequest.BodyPublisherofByteArray(byte[] buf, int offset, int length) 指定されたoffsetから始まるlengthバイトの指定されたバイト配列の内容を本文として持つリクエスト本文パブリッシャを返します。static HttpRequest.BodyPublisherofByteArrays(Iterable<byte[]> iter) バイト配列のIterableからデータを取得するリクエスト本文パブリッシャ。static HttpRequest.BodyPublisherファイルの内容からデータを取得するリクエスト本文発行者。static HttpRequest.BodyPublisherofFileChannel(FileChannel channel, long offset, long length) 指定されたoffsetから開始して、指定されたファイルchannelから読み取られたlengthコンテンツ・バイトの本文パブリッシャを返します。static HttpRequest.BodyPublisherofInputStream(Supplier<? extends InputStream> streamSupplier) InputStreamからデータを読み取るリクエスト本文パブリッシャ。static HttpRequest.BodyPublisherUTF_8文字セットを使用して変換された、指定されたStringの本文を持つリクエスト本体パブリッシャを返します。static HttpRequest.BodyPublisher指定された文字セットを使用して変換された、指定されたStringの本文を持つリクエスト・ボディ・パブリッシャを返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
メソッドの詳細
-
fromPublisher
public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher) 指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。 返されたリクエスト本文パブリッシャのコンテンツ長は不明です。- APIのノート:
- このメソッドは、
BodyPublisherとFlow.Publisherの間のアダプタとして使用できます。この場合、パブリッシャが公開するリクエスト本文の量は不明です。 - パラメータ:
publisher- 本文の発行責任者- 戻り値:
- a BodyPublisher
-
fromPublisher
public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength) 指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。 返されたリクエスト本文パブリッシャは、指定されたコンテンツ長を持ちます。与えられた
contentLengthは正の数で、publisherが公開しなければならない正確なバイト数を表します。- APIのノート:
- このメソッドは、
BodyPublisherとFlow.Publisherの間のアダプタとして使用できます。BodyPublisherでは、パブリッシャがパブリッシュするリクエスト本文の量がわかります。 - パラメータ:
publisher- 本文の発行責任者contentLength- パブリッシャが公開する正確なバイト数を表す正の数- 戻り値:
- a BodyPublisher
- スロー:
IllegalArgumentException- コンテンツの長さが正でない場合
-
ofString
public static HttpRequest.BodyPublisher ofString(String body) UTF_8文字セットを使用して変換された、指定されたStringの本文を持つリクエスト本体パブリッシャを返します。- パラメータ:
body- 本文を含むString- 戻り値:
- a BodyPublisher
-
ofString
public static HttpRequest.BodyPublisher ofString(String s, Charset charset) 指定された文字セットを使用して変換された、指定されたStringの本文を持つリクエスト・ボディ・パブリッシャを返します。- パラメータ:
s- 本文を含むStringcharset- 文字列をバイトに変換する文字セット- 戻り値:
- a BodyPublisher
-
ofInputStream
public static HttpRequest.BodyPublisher ofInputStream(Supplier<? extends InputStream> streamSupplier) InputStreamからデータを読み取るリクエスト本文パブリッシャ。InputStreamのSupplierは、コンテンツがバッファされていないため、リクエストを繰り返す必要がある場合に使用されます。Supplierは、その後の試行でnullを返します。この場合、リクエストは失敗します。- パラメータ:
streamSupplier- オープンなInputStreamのサプライヤ- 戻り値:
- a BodyPublisher
-
ofByteArray
public static HttpRequest.BodyPublisher ofByteArray(byte[] buf) 本文が指定されたバイト配列であるリクエスト本文パブリッシャを返します。- パラメータ:
buf- 本文を含むバイト配列- 戻り値:
- a BodyPublisher
-
ofByteArray
public static HttpRequest.BodyPublisher ofByteArray(byte[] buf, int offset, int length) 指定されたoffsetから始まるlengthバイトの指定されたバイト配列の内容を本文として持つリクエスト本文パブリッシャを返します。- パラメータ:
buf- 本文を含むバイト配列offset- 最初のバイトのオフセットlength- 使用するバイト数- 戻り値:
- a BodyPublisher
- スロー:
IndexOutOfBoundsException- サブ範囲が範囲外として定義されている場合
-
ofFile
public static HttpRequest.BodyPublisher ofFile(Path path) throws FileNotFoundException ファイルの内容からデータを取得するリクエスト本文発行者。- パラメータ:
path- 本文を含むファイルへのパス- 戻り値:
- a BodyPublisher
- スロー:
FileNotFoundException- パスが見つからない場合
-
ofFileChannel
public static HttpRequest.BodyPublisher ofFileChannel(FileChannelチャネル、longオフセット、long length)はIOExceptionをスローします 指定されたoffsetから開始して、指定されたファイルchannelから読み取られたlengthコンテンツ・バイトの本文パブリッシャを返します。このメソッドと戻された
BodyPublisherは、channelの位置を変更せず、channelをクローズしません。 呼出し側は、不要になったらchannelをクローズする必要があります。- APIのノート:
- このメソッドは、ファイルのリージョンのみをリクエスト本文として公開するか、ファイルの異なるリージョンを同時に公開するために使用できます。 一般的な使用方法は、
FileChannelの単一インスタンスを作成してファイルの異なるリージョンを公開し、複数の同時HttpRequestを送信することです。それぞれが同じチャネルから作成された新しいofFileChannel BodyPublisherを、オフセットと長さで指定された異なる(通常は重複しない)バイト範囲で使用します。 - パラメータ:
channel- ファイル・チャネルoffset- 最初のバイトのオフセットlength- ファイル・チャネルから読み取るバイト数- 戻り値:
- 指定された
offsetから始まる、指定されたファイルchannelから読み取られたlengthコンテンツ・バイトの本文パブリッシャ。 - スロー:
IndexOutOfBoundsException- チャネルによって参照されるファイルのサイズと比較して、指定されたバイト範囲が範囲外であることが判明した場合IOException- チャネルのサイズを判別できない場合、またはchannelがクローズされている場合- 導入されたバージョン:
- 26
-
ofByteArrays
public static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter) バイト配列のIterableからデータを取得するリクエスト本文パブリッシャ。Iteratorインスタンスを提供するIterableが提供されています。 リクエストを送信しようとするたびに、Iterableが1回呼び出されます。- パラメータ:
iter- バイト配列のIterable- 戻り値:
- a BodyPublisher
-
noBody
public static HttpRequest.BodyPublisher noBody()リクエスト本文を送信しないリクエスト本文パブリッシャ。- 戻り値:
- すぐに完了し、リクエスト本文を送信しないBodyPublisher。
-
concat
public static HttpRequest.BodyPublisher concat(HttpRequest.BodyPublisher... publishers) パブリッシャのシーケンスによってパブリッシュされたリクエスト本文の連結で構成されるリクエスト本文をパブリッシュするBodyPublisherを返します。シーケンスが空の場合、emptyパブリッシャが返されます。 それ以外の場合、シーケンスに単一の要素が含まれていれば、そのパブリッシャが返されます。 それ以外の場合は、「連結パブリッシャ」が返されます。
「連結パブリッシャ」によってパブリッシュされたリクエスト本文は、各パブリッシャのすべてのバイトを順番に連結することでパブリッシュされたリクエスト本文と論理的に同等です。
すべての本文バイトがパブリッシュされるか、エラーが発生するか、連結パブリッシャ・サブスクリプションが取り消されるまで、各パブリッシャは順番にサブスクライブされます。 連結パブリッシャは複数回サブスクライブされる場合があり、その結果、シーケンス内のパブリッシャが複数回サブスクライブされる可能性があります。
連結パブリッシャに既知のコンテンツ長があるのは、シーケンス内のすべてのパブリッシャに既知のコンテンツ長がある場合のみです。 連結パブリッシャによってレポートされる
contentLengthは、次のように計算されます:- いずれかのパブリッシャが「不明」コンテンツの長さをレポートした場合、または既知のコンテンツの長さの合計が
Long.MAX_VALUEを超える場合、結果のコンテンツの長さは「不明」になります。 - それ以外の場合、生成されるコンテンツの長さは、既知のコンテンツの長さの合計(
0からLong.MAX_VALUEまでの数値を含む)になります。
- 実装上のノート:
- 連結パブリッシャ・サブスクリプションが「取消済」の場合、またはバイトの公開中にエラーが発生した場合、順序内のすべてのパブリッシャがサブスクライブされるわけではありません。
- パラメータ:
publishers- パブリッシャのシーケンス。- 戻り値:
- シーケンス内の各パブリッシャによって発行されたすべてのバイトの連結と論理的に同等のリクエスト本文を発行する集約パブリッシャ。
- 導入されたバージョン:
- 16
- いずれかのパブリッシャが「不明」コンテンツの長さをレポートした場合、または既知のコンテンツの長さの合計が
-