モジュール java.net.http
パッケージ java.net.http

クラスHttpRequest

java.lang.Object
java.net.http.HttpRequest

public abstract class HttpRequest extends Object
HTTPリクエスト。

HttpRequestインスタンスは、HttpRequest builderを介して構築されます。 HttpRequestビルダーは、newBuilderメソッドのいずれかから取得されます。 リクエストURI、ヘッダーおよび本文を設定できます。 リクエスト本体は、POSTPUTまたはmethodメソッドの1つに提供されているBodyPublisherを介して提供されます。 必要なパラメータがすべてビルダーに設定されると、buildHttpRequestを返します。 一部のパラメータが異なる複数の関連リクエストを作成するために、ビルダーを何度でもコピーおよび変更できます。

レスポンス本文を文字列として出力する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
  • コンストラクタの詳細

    • 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のノート:
      次のシナリオは、フィルタの一般的なユースケースを示しています。 HttpRequest requestを確認してください:

      • すべてのヘッダーを保持:
        HttpRequest.newBuilder(request, (n, v) -> true)
      • すべてのヘッダーを削除:
        HttpRequest.newBuilder(request, (n, v) -> false)
      • 特定のヘッダー(e.g. Foo-Bar)を削除します:
        HttpRequest.newBuilder(request, (name, value) -> !name.equalsIgnoreCase("Foo-Bar"))
      パラメータ:
      request - 元のリクエスト
      filter - ヘッダー・フィルタ
      戻り値:
      新しいリクエスト・ビルダー
      例外:
      IllegalArgumentException - 指定されたリクエスト(たとえば、リクエストに無効なパラメータが含まれている場合)から新しいビルダーをシードできない場合
      導入されたバージョン:
      16
    • newBuilder

      public static HttpRequest.Builder newBuilder()
      HttpRequestビルダーを作成します。
      戻り値:
      新しいリクエスト・ビルダー
    • bodyPublisher

      public abstract Optional<HttpRequest.BodyPublisher> bodyPublisher()
      このリクエストで設定されたHttpRequest.BodyPublisherを含むOptionalを返します。 BodyPublisherがリクエスト・ビルダーに設定されていない場合、Optionalは空です。
      戻り値:
      このリクエストを含むOptional BodyPublisher
    • method

      public abstract String method()
      このリクエストのリクエスト・メソッドを返します。 明示的に設定されていない場合、任意のリクエストに対するデフォルトのメソッドは"GET"です。
      戻り値:
      このリクエスト・メソッド
    • timeout

      public abstract Optional<Duration> timeout()
      このリクエスト・タイムアウト期間を含むOptionalを返します。 リクエスト・ビルダーでタイムアウト時間が設定されていない場合、Optionalは空です。
      戻り値:
      このリクエスト・タイムアウト時間を含むOptional
    • expectContinue

      public abstract boolean expectContinue()
      このリクエスト「続行の予定」設定を返します。
      戻り値:
      このリクエストは設定を続けることを期待しています
    • uri

      public abstract URI uri()
      このリクエストURIを返します。
      戻り値:
      このリクエスト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メソッドの汎用規約を満たします。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - このオブジェクトが比較されるオブジェクト
      戻り値:
      指定されたオブジェクトがこのHTTPリクエストと等しい HttpRequestである場合にのみtrue
      関連項目:
    • hashCode

      public final int hashCode()
      このHTTPリクエスト・インスタンスのハッシュ・コードを計算します。

      ハッシュ・コードは、HTTPリクエストのURI、メソッド、およびヘッダー・コンポーネントに基づいており、Object.hashCodeメソッドの汎用規約を満たしています。

      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このHTTPリクエストのハッシュ・コード値
      関連項目: