-
- 型パラメータ:
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
オブジェクトが返されると、本文は文字列に完全に書き込まれます。- 戻り値:
- レスポンス本文ハンドラ
-
-