-
- 型パラメータ:
T- レスポンス本文型。
- 含まれているクラス:
- HttpResponse < T>
- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public static interface HttpResponse.BodyHandler<T>
レスポンス本文のハンドラ。
インキュベーション機能。将来のリリースで削除されます。これは、2つのパラメータ: レスポンス・ステータス・コード、およびレスポンス・ヘッダーを返し、
HttpResponse.BodyProcessorを返します。 この関数は、レスポンス本文が読み込まれる直前に常に呼び出されます。 その実装は、ステータス・コードまたはヘッダーを調べ、レスポンス本文を受け入れるか廃棄するか、それを受け入れるかどうかを決める必要があります。ステータス・コードまたはヘッダー(体は常に受け入れられている)を使用しない事前定義された実装がいくつか定義されています:
asByteArray()asByteArrayConsumer(Consumer)asFileDownload(Path,OpenOption...)discard(Object)asString(Charset)
これらの実装は同等の
HttpResponse.BodyProcessorを返します。 あるいは、ハンドラを使用してステータス・コードを調べたり、必要に応じて異なる本文プロセッサを返すことができます。ハンドラの使用例
最初の例では、レスポンス・ヘッダーとステータスを無視し、常に同じ方法でレスポンス本文を処理する事前定義されたハンドラ関数の1つを使用しています。
これらの事前定義されたハンドラがステータス・コードとヘッダーを無視しても、HttpResponse<Path> resp = HttpRequest .create(URI.create("http://www.foo.com")) .GET() .response(BodyHandler.asFile(Paths.get("/tmp/f")));HttpResponseから返されるときには、この情報に引き続きアクセスできます。2番目の例では、この関数はステータス・コードに応じて異なるプロセッサを返します。
HttpResponse<Path> resp1 = HttpRequest .create(URI.create("http://www.foo.com")) .GET() .response( (status, headers) -> status == 200 ? BodyProcessor.asFile(Paths.get("/tmp/f")) : BodyProcessor.discard(Paths.get("/NULL")));
-
-
メソッドのサマリー
-
-
-
メソッドの詳細
-
apply
HttpResponse.BodyProcessor<T> apply(int statusCode, HttpHeaders responseHeaders)
指定されたレスポンス・ステータス・コードとヘッダーを考慮してBodyProcessorを返します。 このメソッドは、本文が読み込まれる前に常に呼び出され、その実装は、discard()から返されたBodyProcessorを返すことで、本文を保持してどこかに格納するか、または破棄するかを決定できます。- パラメータ:
statusCode- 受信したHTTPステータス・コードresponseHeaders- 受信したレスポンス・ヘッダー- 戻り値:
- レスポンス本文ハンドラ
-
discard
static <U> HttpResponse.BodyHandler<U> discard(U value)
レスポンス本文を破棄し、指定された値をその代わりに使用するレスポンス本文ハンドラを返します。- 型パラメータ:
U- レスポンス本文型- パラメータ:
value- 身体として返すUの値- 戻り値:
- レスポンス本文ハンドラ
-
asString
static HttpResponse.BodyHandler<String> asString(Charset charset)
BodyProcessor.asString(Charset)から取得したBodyProcessor<String>を返すBodyHandler<String>を返します。 文字セットが提供されている場合、本文はそれを使用してデコードされます。 charsetがnullの場合、プロセッサはContent-encodingヘッダーから文字セットを判別しようとします。 その文字セットがサポートされていない場合、UTF_8が使用されます。- パラメータ:
charset- 本文を解釈する文字セットの名前。nullの場合、Content-encodingヘッダーからcharsetを決定した場合- 戻り値:
- レスポンス本文ハンドラ
-
asFile
static HttpResponse.BodyHandler<Path> asFile(Path file)
BodyProcessor.asFile(Path)から取得したBodyProcessor<Path>を返すBodyHandler<Path>を返します。HttpResponseオブジェクトが返されると、本文はファイルに完全に書き込まれ、HttpResponse.body()はそのPathへの参照を返します。- パラメータ:
file- 本文を格納するファイル- 戻り値:
- レスポンス本文ハンドラ
-
asFileDownload
static HttpResponse.BodyHandler<Path> asFileDownload(Path directory, OpenOption... openOptions)
ダウンロード・ディレクトリが指定されているBodyProcessor<Path>を返すBodyHandler<Path>を返しますが、ファイル名はContent-Dispositionレスポンス・ヘッダーから取得されます。Content-Dispositionヘッダーにはattachment型を指定する必要があり、filenameパラメータも含める必要があります。 ファイル名に複数のパス・コンポーネントが指定されている場合、最終コンポーネントのみがファイル名(与えられたディレクトリ名で)として使用されます。HttpResponseオブジェクトが返されると、本文はファイルに完全に書き込まれ、HttpResponse.body()はファイルのPathオブジェクトを返します。 返されるPathは、提供されたディレクトリ名とサーバーによって提供されるファイル名の組み合わせです。 先のディレクトリが存在しないかに書き込むことができない場合、レスポンスはIOExceptionで失敗します。- パラメータ:
directory- ファイルを格納するディレクトリopenOptions- オープン・オプション- 戻り値:
- レスポンス本文ハンドラ
-
asFile
static HttpResponse.BodyHandler<Path> asFile(Path file, OpenOption... openOptions)
BodyProcessor.asFile(Path,OpenOption...)から取得したBodyProcessor<Path>を返すBodyHandler<Path>を返します。HttpResponseオブジェクトが返されると、本文はファイルに完全に書き込まれ、HttpResponse.body()はそのPathへの参照を返します。- パラメータ:
file- 本文を格納するファイル名openOptions- ファイルのオープン/作成時に使用するオプション- 戻り値:
- レスポンス本文ハンドラ
-
asByteArrayConsumer
static HttpResponse.BodyHandler<Void> asByteArrayConsumer(Consumer<Optional<byte[]>> consumer)
BodyProcessor.asByteArrayConsumer(Consumer)から取得したBodyProcessor<Void>を返すBodyHandler<Void>を返します。HttpResponseオブジェクトが返されると、本文はコンシューマに完全に書き込まれました。- パラメータ:
consumer- レスポンス本文を受け入れるコンシューマ- 戻り値:
- レスポンス本文ハンドラ
-
asByteArray
static HttpResponse.BodyHandler<byte[]> asByteArray()
BodyProcessor.asByteArray()から取得したBodyProcessor<byte[]>を返すBodyHandler<byte[]>を返します。HttpResponseオブジェクトが返されると、本文はバイト配列に完全に書き込まれます。- 戻り値:
- レスポンス本文ハンドラ
-
asString
static HttpResponse.BodyHandler<String> asString()
BodyProcessor.asString(Charset)から取得したBodyProcessor<String>を返すBodyHandler<String>を返します。 本文はContent-encodingレスポンス・ヘッダーで指定された文字セットを使用して復号化されます。 そのようなヘッダーがない場合、または文字セットがサポートされていない場合は、UTF_8が使用されます。HttpResponseオブジェクトが返されると、本文は文字列に完全に書き込まれます。- 戻り値:
- レスポンス本文ハンドラ
-
-