クラス HttpComponentsClientHttpRequestFactory

java.lang.ObjectSE
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
実装済みのインターフェース一覧:
DisposableBeanClientHttpRequestFactory

public class HttpComponentsClientHttpRequestFactory extends ObjectSE implements ClientHttpRequestFactory, DisposableBean
Apache HttpComponents HttpClient を使用してリクエストを作成する ClientHttpRequestFactory 実装。

事前構成された HttpClient インスタンスを使用できます。認証、HTTP 接続プールなどで使用できる可能性があります。

注意 : Spring 6.0 以降では Apache HttpComponents 5.1 以降が必要です。

導入:
3.1
作成者:
Oleg Kalnichevski, Arjen Poutsma, Stephane Nicoll, Juergen Hoeller
  • コンストラクター概要

    コンストラクター
    コンストラクター
    説明
    システムプロパティに基づいて、デフォルトの HttpClient を使用して HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。
    HttpComponentsClientHttpRequestFactory(org.apache.hc.client5.http.classic.HttpClient httpClient)
    指定された HttpClient インスタンスを使用して HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。
  • 方法の概要

    修飾子と型
    メソッド
    説明
    protected org.apache.hc.core5.http.protocol.HttpContext
    指定された HTTP メソッドと URI に対して HttpContext を作成するテンプレートメソッド。
    protected org.apache.hc.core5.http.ClassicHttpRequest
    指定された HTTP メソッドと URI 仕様の Commons HttpMethodBase オブジェクトを作成します。
    createRequest(URISE uri, HttpMethod httpMethod)
    指定された URI および HTTP メソッドの新しい ClientHttpRequest を作成します。
    protected org.apache.hc.client5.http.config.RequestConfig
    特定のクライアントで使用するデフォルトの RequestConfig を作成します。
    void
    基盤となる HttpClientConnectionManager の接続プールがある場合はそれを閉じるシャットダウンフック。
    org.apache.hc.client5.http.classic.HttpClient
    同期実行に使用される HttpClient を返します。
    protected org.apache.hc.client5.http.config.RequestConfig
    mergeRequestConfig(org.apache.hc.client5.http.config.RequestConfig clientConfig)
    必要に応じて、指定された HttpClient -level RequestConfig をファクトリレベルの構成とマージします。
    protected void
    postProcessHttpRequest(org.apache.hc.core5.http.ClassicHttpRequest request)
    HttpComponentsClientHttpRequest の一部として返される前に ClassicHttpRequest を操作できるようにするテンプレートメソッド。
    void
    setBufferRequestBody(boolean bufferRequestBody)
    非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
    6.1 リクエストは、このプロパティが false であるかのようにバッファリングされないため
    void
    setConnectionRequestTimeout(int connectionRequestTimeout)
    基礎となる RequestConfig を使用して接続マネージャーに接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。
    void
    setConnectionRequestTimeout(DurationSE connectionRequestTimeout)
    基礎となる RequestConfig を使用して接続マネージャーに接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。
    void
    setConnectTimeout(int connectTimeout)
    非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
    6.2.13 では、connection manager の代わりに the connection configuration に設定することを推奨します。
    void
    非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
    6.2.13 では、connection manager の代わりに the connection configuration に設定することを推奨します。
    void
    setHttpClient(org.apache.hc.client5.http.classic.HttpClient httpClient)
    同期実行に使用される HttpClient を設定します。
    void
    setHttpContextFactory(BiFunctionSE<HttpMethod,URISE,org.apache.hc.core5.http.protocol.HttpContext> httpContextFactory)
    リクエストごとに HttpContext を事前に作成するようにファクトリを構成します。
    void
    setReadTimeout(int readTimeout)
    基礎となる RequestConfig のレスポンスタイムアウトを設定します。
    void
    基礎となる RequestConfig のレスポンスタイムアウトを設定します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • コンストラクターの詳細

    • HttpComponentsClientHttpRequestFactory

      public HttpComponentsClientHttpRequestFactory()
      システムプロパティに基づいて、デフォルトの HttpClient を使用して HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。
    • HttpComponentsClientHttpRequestFactory

      public HttpComponentsClientHttpRequestFactory(org.apache.hc.client5.http.classic.HttpClient httpClient)
      指定された HttpClient インスタンスを使用して HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。
      パラメーター:
      httpClient - このリクエストファクトリに使用する HttpClient インスタンス
  • メソッドの詳細

    • setHttpClient

      public void setHttpClient(org.apache.hc.client5.http.classic.HttpClient httpClient)
      同期実行に使用される HttpClient を設定します。
    • getHttpClient

      public org.apache.hc.client5.http.classic.HttpClient getHttpClient()
      同期実行に使用される HttpClient を返します。
    • setConnectTimeout

      @DeprecatedSE(since="6.2.13", forRemoval=true) public void setConnectTimeout(int connectTimeout)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      6.2.13 では、connection manager の代わりに the connection configuration に設定することを推奨します。
      基になる RequestConfig の接続タイムアウトを設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。

      カスタム HttpClient で RequestConfig インスタンスを指定することにより、追加のプロパティを構成できます。

      このオプションは、SSL ハンドシェイクまたは CONNECT リクエストの接続タイムアウトには影響しません。そのためには、HttpClient 自体で SocketConfig を使用する必要があります。

      パラメーター:
      connectTimeout - ミリ秒単位のタイムアウト値
      関連事項:
      • RequestConfig.getConnectTimeout()
      • SocketConfig.getSoTimeout()
    • setConnectTimeout

      @DeprecatedSE(since="6.2.13", forRemoval=true) public void setConnectTimeout(DurationSE connectTimeout)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      6.2.13 では、connection manager の代わりに the connection configuration に設定することを推奨します。
      基になる RequestConfig の接続タイムアウトを設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。

      カスタム HttpClient で RequestConfig インスタンスを指定することにより、追加のプロパティを構成できます。

      このオプションは、SSL ハンドシェイクまたは CONNECT リクエストの接続タイムアウトには影響しません。そのためには、HttpClient 自体で SocketConfig を使用する必要があります。

      パラメーター:
      connectTimeout - Duration としてのタイムアウト。
      導入:
      6.1
      関連事項:
      • RequestConfig.getConnectTimeout()
      • SocketConfig.getSoTimeout()
    • setConnectionRequestTimeout

      public void setConnectionRequestTimeout(int connectionRequestTimeout)
      基礎となる RequestConfig を使用して接続マネージャーに接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。

      カスタム HttpClient で RequestConfig インスタンスを指定することにより、追加のプロパティを構成できます。

      パラメーター:
      connectionRequestTimeout - ミリ秒単位の接続をリクエストするタイムアウト値
      関連事項:
      • RequestConfig.getConnectionRequestTimeout()
    • setConnectionRequestTimeout

      public void setConnectionRequestTimeout(DurationSE connectionRequestTimeout)
      基礎となる RequestConfig を使用して接続マネージャーに接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。

      カスタム HttpClient で RequestConfig インスタンスを指定することにより、追加のプロパティを構成できます。

      パラメーター:
      connectionRequestTimeout - Duration として接続をリクエストするためのタイムアウト値。
      導入:
      6.1
      関連事項:
      • RequestConfig.getConnectionRequestTimeout()
    • setReadTimeout

      public void setReadTimeout(int readTimeout)
      基盤となる RequestConfig のレスポンスタイムアウトを設定します。タイムアウト値 0 は、無制限のタイムアウトを指定します。

      カスタム HttpClient で RequestConfig インスタンスを指定することにより、追加のプロパティを構成できます。

      パラメーター:
      readTimeout - ミリ秒単位のタイムアウト値
      導入:
      6.2
      関連事項:
      • RequestConfig.getResponseTimeout()
    • setReadTimeout

      public void setReadTimeout(DurationSE readTimeout)
      基盤となる RequestConfig のレスポンスタイムアウトを設定します。タイムアウト値 0 は、無制限のタイムアウトを指定します。

      カスタム HttpClient で RequestConfig インスタンスを指定することにより、追加のプロパティを構成できます。

      パラメーター:
      readTimeout - Duration としてのタイムアウト。
      導入:
      6.2
      関連事項:
      • RequestConfig.getResponseTimeout()
    • setBufferRequestBody

      @DeprecatedSE(since="6.1", forRemoval=true) public void setBufferRequestBody(boolean bufferRequestBody)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      6.1 リクエストは、このプロパティが false であるかのようにバッファリングされないため
      このリクエストファクトリがリクエストボディを内部でバッファリングするかどうかを示します。

      デフォルトは true です。POST または PUT を介して大量のデータを送信する場合、このプロパティを false に変更して、メモリが不足しないようにすることをお勧めします。

      導入:
      4.0
    • setHttpContextFactory

      public void setHttpContextFactory(BiFunctionSE<HttpMethod,URISE,org.apache.hc.core5.http.protocol.HttpContext> httpContextFactory)
      リクエストごとに HttpContext を事前に作成するようにファクトリを構成します。

      これは、たとえば、クライアント証明書ごとに異なる RestTemplate があり、特定の RestTemplate インスタンスを介して行われるすべての呼び出しが同じクライアント ID に関連付けられている相互 TLS 認証で役立つ場合があります。HttpClientContext.setUserToken(Object) を使用して、すべてのリクエストに固定ユーザートークンを指定できます。

      パラメーター:
      httpContextFactory - 使用するコンテキストファクトリ
      導入:
      5.2.7
    • createRequest

      public ClientHttpRequest createRequest(URISE uri, HttpMethod httpMethod) throws IOExceptionSE
      インターフェースからコピーされた説明: ClientHttpRequestFactory
      指定された URI および HTTP メソッドの新しい ClientHttpRequest を作成します。

      返されたリクエストは、ClientHttpRequest.execute() を呼び出して書き込み、実行できます。

      次で指定:
      インターフェース ClientHttpRequestFactorycreateRequest 
      パラメーター:
      uri - リクエストを作成する URI
      httpMethod - 実行する HTTP メソッド
      戻り値:
      作成されたリクエスト
      例外:
      IOExceptionSE - I/O エラーの場合
    • createRequestConfig

      @Nullable protected org.apache.hc.client5.http.config.RequestConfig createRequestConfig(ObjectSE client)
      特定のクライアントで使用するデフォルトの RequestConfig を作成します。null を返して、カスタムリクエスト構成を設定する必要がなく、HttpClient のデフォルトを使用する必要があることを示すことができます。

      デフォルトの実装は、クライアントのデフォルトを、このファクトリインスタンスのローカルカスタマイズ(存在する場合)とマージしようとします。

      パラメーター:
      client - チェックする HttpClient (または HttpAsyncClient
      戻り値:
      使用する実際の RequestConfig (null の場合があります)
      導入:
      4.2
      関連事項:
    • mergeRequestConfig

      protected org.apache.hc.client5.http.config.RequestConfig mergeRequestConfig(org.apache.hc.client5.http.config.RequestConfig clientConfig)
      必要に応じて、指定された HttpClient -level RequestConfig をファクトリレベルの構成とマージします。
      パラメーター:
      clientConfig - 現在の設定が保持している
      戻り値:
      マージされたリクエスト設定
      導入:
      4.2
    • createHttpUriRequest

      protected org.apache.hc.core5.http.ClassicHttpRequest createHttpUriRequest(HttpMethod httpMethod, URISE uri)
      指定された HTTP メソッドと URI 仕様の Commons HttpMethodBase オブジェクトを作成します。
      パラメーター:
      httpMethod - HTTP メソッド
      uri - URI
      戻り値:
      Commons HttpMethodBase オブジェクト
    • postProcessHttpRequest

      protected void postProcessHttpRequest(org.apache.hc.core5.http.ClassicHttpRequest request)
      HttpComponentsClientHttpRequest の一部として返される前に ClassicHttpRequest を操作できるようにするテンプレートメソッド。

      デフォルトの実装は空です。

      パラメーター:
      request - 処理するリクエスト
    • createHttpContext

      @Nullable protected org.apache.hc.core5.http.protocol.HttpContext createHttpContext(HttpMethod httpMethod, URISE uri)
      指定された HTTP メソッドと URI に対して HttpContext を作成するテンプレートメソッド。

      デフォルトの実装は null を返します。

      パラメーター:
      httpMethod - HTTP メソッド
      uri - URI
      戻り値:
      http コンテキスト
    • destroy

      public void destroy() throws ExceptionSE
      基盤となる HttpClientConnectionManager の接続プールがある場合はそれを閉じるシャットダウンフック。
      次で指定:
      インターフェース DisposableBeandestroy 
      例外:
      ExceptionSE - シャットダウンエラーの場合。例外はログに記録されますが、再スローされず、他の Bean もリソースを解放できます。