- 型パラメータ:
T
- レスポンス本文型
- 含まれているインタフェース:
- HttpResponse < T>
- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public static interface HttpResponse.BodyHandler<T>
レスポンス本文のハンドラ。 クラス
BodyHandlers
は、多くの共通本文ハンドラの実装を提供します。
BodyHandler
インタフェースでは、実際のレスポンス本文を受信する前にレスポンス・コードとヘッダーを検査でき、BodySubscriber
レスポンスの作成を担当します。 BodySubscriber
は実際のレスポンス本文バイトを消費し、通常は上位レベルのJavaタイプに変換します。
BodyHandler
は、ResponseInfo
オブジェクトを取得し、BodySubscriber
を返す関数です。 BodyHandler
は、レスポンスのステータス・コードおよびヘッダーが使用可能になったときに呼び出されますが、レスポンス本文のバイトが受信される前に呼び出されます。
次の例では、(レスポンス本文をファイルにストリームします。)と同じ方法で常にレスポンス本文を処理する「事前定義済本文ハンドラ」のいずれかを使用します。
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://www.foo.com/"))
.build();
client.sendAsync(request, BodyHandlers.ofFile(Paths.get("/tmp/f")))
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
事前定義済ハンドラではレスポンス・コードを検査できませんが、返されると、応答コードおよびヘッダーは常にHttpResponse
から取得できます。
2番目の例では、この関数はステータス・コードに応じて異なるサブスクライバを返します。
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://www.foo.com/"))
.build();
BodyHandler<Path> bodyHandler = (rspInfo) -> rspInfo.statusCode() == 200
? BodySubscribers.ofFile(Paths.get("/tmp/f"))
: BodySubscribers.replacing(Paths.get("/NULL"));
client.sendAsync(request, bodyHandler)
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
- 導入されたバージョン:
- 11
- 関連項目:
HttpResponse.BodyHandlers
-
メソッドのサマリー
修飾子と型 メソッド 説明 HttpResponse.BodySubscriber<T>
apply(HttpResponse.ResponseInfo responseInfo)
与えられたレスポンス・ステータス・コードとヘッダーを考慮してBodySubscriber
を返します。
-
メソッドの詳細
-
apply
HttpResponse.BodySubscriber<T> apply(HttpResponse.ResponseInfo responseInfo)与えられたレスポンス・ステータス・コードとヘッダーを考慮してBodySubscriber
を返します。 実際のレスポンス本文バイトが読み取られる前にこのメソッドが呼び出され、レスポンス本文バイトを使用するには、実装でBodySubscriber
が返される必要があります。レスポンス本文は、
discarding
またはreplacing
のいずれかを使用して破棄できます。- パラメータ:
responseInfo
- レスポンス情報- 戻り値:
- 本文サブスクライバ
-