クラスHttpRequest
HttpRequestインスタンスは、HttpRequest builderを介して構築されます。 HttpRequestビルダーは、newBuilderメソッドのいずれかから取得されます。 リクエストURI、ヘッダーおよび本文を設定できます。 リクエスト本体は、POST、PUTまたはmethodメソッドの1つに提供されているBodyPublisherを介して提供されます。 必要なパラメータがすべてビルダーに設定されると、buildはHttpRequestを返します。 一部のパラメータが異なる複数の関連リクエストを作成するために、ビルダーを何度でもコピーおよび変更できます。
レスポンス本文を文字列として出力するGETリクエストの例を次に示します。
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://foo.com/"))
.build();
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
クラスBodyPublishersは、多くの共通パブリッシャの実装を提供します。 または、カスタムBodyPublisherの実装を使用できます。
- 導入されたバージョン:
- 11
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static interfaceBodyPublisherは、上位レベルのJavaオブジェクトをリクエスト本文として送信するのに適したバイト・バッファのフローに変換します。static classStringからのリクエスト本文の公開やファイルからの公開など、各種の便利なパブリッシャを実装するBodyPublisherの実装。static interface「HTTPリクエスト」のビルダー。 -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明abstract Optional<HttpRequest.BodyPublisher> このリクエストで設定されたHttpRequest.BodyPublisherを含むOptionalを返します。final booleanこのHTTPリクエスト・インスタンスが指定されたオブジェクトと等しいかどうかをテストします。abstract booleanこのリクエスト「続行の予定」設定を返します。final inthashCode()このHTTPリクエスト・インスタンスのハッシュ・コードを計算します。abstract HttpHeadersheaders()このリクエストが送信された(または)である(user-accessible)リクエスト・ヘッダー。abstract Stringmethod()このリクエストのリクエスト・メソッドを返します。static HttpRequest.BuilderHttpRequestビルダーを作成します。static HttpRequest.BuildernewBuilder(HttpRequest request, BiPredicate<String, String> filter) 既存のHttpRequestから初期状態がコピーされるBuilderを作成します。static HttpRequest.BuildernewBuilder(URI uri) 指定されたURIのHttpRequestビルダーを作成します。timeout()このリクエストのタイムアウト期間を含むOptionalを返します。abstract URIuri()このリクエストURIを返します。abstract Optional<HttpClient.Version> version()このHttpRequestにリクエストされるHTTPプロトコル・バージョンを含むOptionalを返します。
-
コンストラクタの詳細
-
HttpRequest
protected HttpRequest()HttpRequestを作成します。
-
-
メソッドの詳細
-
newBuilder
public static HttpRequest.Builder newBuilder(URI uri) 指定されたURIのHttpRequestビルダーを作成します。- パラメータ:
uri- リクエストURI- 戻り値:
- 新しいリクエスト・ビルダー
- スロー:
IllegalArgumentException- URIスキームがサポートされていない場合。
-
newBuilder
public static HttpRequest.Builder newBuilder(HttpRequest request, BiPredicate<String, String> filter) 既存のHttpRequestから初期状態がコピーされるBuilderを作成します。このビルダーを使用すると、元のビルダーと同等の
HttpRequestを構築しながら、構築前のリクエスト状態を修正できます - たとえば、ヘッダーを追加します。filterは、特定のリクエストからコピーされるときに、各ヘッダー名と値のペアに適用されます。 完了すると、filterによってレイアウトされた条件を満たすヘッダーのみが、このメソッドから返されるBuilderに存在します。- APIのノート:
- 次のシナリオは、フィルタの一般的なユースケースを示しています。
HttpRequestrequestを確認してください:
- すべてのヘッダーを保持:
HttpRequest.newBuilder(request, (n, v) -> true) - すべてのヘッダーを削除:
HttpRequest.newBuilder(request, (n, v) -> false) - 特定のヘッダー(たとえば、Foo-Bar)を削除します:
HttpRequest.newBuilder(request, (name, value) -> !name.equalsIgnoreCase("Foo-Bar"))
- すべてのヘッダーを保持:
- パラメータ:
request- 元のリクエストfilter- ヘッダー・フィルタ- 戻り値:
- 新しいリクエスト・ビルダー
- スロー:
IllegalArgumentException- 指定されたリクエスト(たとえば、リクエストに無効なパラメータが含まれている場合)から新しいビルダーをシードできない場合- 導入されたバージョン:
- 16
-
newBuilder
-
bodyPublisher
public abstract Optional<HttpRequest.BodyPublisher> bodyPublisher()このリクエストで設定されたHttpRequest.BodyPublisherを含むOptionalを返します。 リクエストのビルダーでBodyPublisherが設定されていない場合、Optionalは空です。- 戻り値:
- このリクエストの
BodyPublisherを含むOptional
-
method
public abstract String method()このリクエストのリクエスト・メソッドを返します。 明示的に設定しない場合、リクエストのデフォルト・メソッドは"GET"です。- 戻り値:
- このリクエストのメソッド
-
timeout
-
expectContinue
-
uri
-
version
public abstract Optional<HttpClient.Version> version()このHttpRequestにリクエストされるHTTPプロトコル・バージョンを含むOptionalを返します。 リクエストのビルダーでバージョンが設定されていない場合、Optionalは空です。 その場合、リクエストされたバージョンは、送信側HttpClientのバージョンになります。 対応するHttpResponseを問い合せて、実際に使用されたバージョンを特定する必要があります。- 戻り値:
- HTTPプロトコル・バージョン
-
headers
public abstract HttpHeaders headers()このリクエストが送信された(または)である(user-accessible)リクエスト・ヘッダー。- 戻り値:
- このリクエストのHttpHeaders
-
equals
public final boolean equals(Object obj) このHTTPリクエスト・インスタンスが指定されたオブジェクトと等しいかどうかをテストします。指定されたオブジェクトが
HttpRequestでない場合、このメソッドはfalseを返します。 URI、メソッド、およびヘッダー・フィールドがすべて等しい場合、2つのHTTPリクエストは等しいです。このメソッドは
Object.equalsメソッドの汎用規約を満たします。 -
hashCode
public final int hashCode()このHTTPリクエスト・インスタンスのハッシュ・コードを計算します。ハッシュ・コードは、HTTPリクエストのURI、メソッドおよびヘッダー・コンポーネントに基づいており、
Object.hashCodeメソッドの一般規約を満たしています。
-