public class HttpComponentsClientHttpRequestFactory extends ObjectSE implements ClientHttpRequestFactory, DisposableBean
ClientHttpRequestFactory
実装。 事前に構成された HttpClient
インスタンスを使用できます。潜在的に認証、HTTP 接続プーリングなどを使用します。
注意 : Spring 4.0 以降では Apache HttpComponents 4.3 以降が必要です。
コンストラクターと説明 |
---|
HttpComponentsClientHttpRequestFactory() システムプロパティに基づいて、デフォルトの HttpClient で HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。 |
HttpComponentsClientHttpRequestFactory(HttpClient httpClient) 指定された HttpClient インスタンスを使用して、HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected org.apache.http.protocol.HttpContext | createHttpContext(HttpMethod httpMethod, URISE uri) 指定された HTTP メソッドと URI の HttpContext を作成するテンプレートメソッド。 |
protected HttpUriRequest | createHttpUriRequest(HttpMethod httpMethod, URISE uri) 指定された HTTP メソッドと URI 仕様の Commons HttpMethodBase オブジェクトを作成します。 |
ClientHttpRequest | createRequest(URISE uri, HttpMethod httpMethod) 指定された URI および HTTP メソッドの新しい ClientHttpRequest を作成します。 |
protected RequestConfig | createRequestConfig(ObjectSE client) 指定されたクライアントで使用するデフォルト RequestConfig を作成します。 |
void | destroy() 基になる ClientConnectionManager の接続プールがあれば、それを閉じるシャットダウンフック。 |
HttpClient | getHttpClient() 同期実行に使用される HttpClient を返します。 |
protected RequestConfig | mergeRequestConfig(RequestConfig clientConfig) |
protected void | postProcessHttpRequest(HttpUriRequest request) HttpComponentsClientHttpRequest の一部として返される前に HttpUriRequest を操作できるテンプレートメソッド。 |
void | setBufferRequestBody(boolean bufferRequestBody) このリクエストファクトリがリクエストボディを内部でバッファリングするかどうかを示します。 |
void | setConnectionRequestTimeout(int connectionRequestTimeout) 基礎となる RequestConfig を使用して接続マネージャーから接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。 |
void | setConnectTimeout(int timeout) 基礎となる RequestConfig の接続タイムアウトを設定します。 |
void | setHttpClient(HttpClient httpClient) 同期実行に使用される HttpClient を設定します。 |
void | setHttpContextFactory(BiFunctionSE<HttpMethod, URISE,org.apache.http.protocol.HttpContext> httpContextFactory) リクエストごとに HttpContext を事前に作成するようにファクトリを構成します。 |
void | setReadTimeout(int timeout) 基になる RequestConfig のソケット読み取りタイムアウトを設定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public HttpComponentsClientHttpRequestFactory()
HttpClient
で HttpComponentsClientHttpRequestFactory
の新しいインスタンスを作成します。public HttpComponentsClientHttpRequestFactory(HttpClient httpClient)
HttpClient
インスタンスを使用して、HttpComponentsClientHttpRequestFactory
の新しいインスタンスを作成します。httpClient
- このリクエストファクトリに使用する HttpClient インスタンス public void setHttpClient(HttpClient httpClient)
HttpClient
を設定します。public HttpClient getHttpClient()
HttpClient
を返します。public void setConnectTimeout(int timeout)
RequestConfig
の接続タイムアウトを設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。 カスタム HttpClient
で RequestConfig
インスタンスを指定することにより、追加のプロパティを設定できます。
このオプションは、SSL ハンドシェイクまたは CONNECT リクエストの接続タイムアウトには影響しません。そのためには、HttpClient
自体で SocketConfig
を使用する必要があります。
timeout
- ミリ秒単位のタイムアウト値 RequestConfig.getConnectTimeout()
, SocketConfig.getSoTimeout()
public void setConnectionRequestTimeout(int connectionRequestTimeout)
RequestConfig
を使用して接続マネージャーから接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。 カスタム HttpClient
で RequestConfig
インスタンスを指定することにより、追加のプロパティを設定できます。
connectionRequestTimeout
- ミリ秒単位の接続をリクエストするタイムアウト値 RequestConfig.getConnectionRequestTimeout()
public void setReadTimeout(int timeout)
RequestConfig
のソケット読み取りタイムアウトを設定します。タイムアウト値 0 は、無限のタイムアウトを指定します。 カスタム HttpClient
で RequestConfig
インスタンスを指定することにより、追加のプロパティを設定できます。
timeout
- ミリ秒単位のタイムアウト値 RequestConfig.getSocketTimeout()
public void setBufferRequestBody(boolean bufferRequestBody)
デフォルトは true
です。POST または PUT を介して大量のデータを送信する場合、このプロパティを false
に変更して、メモリが不足しないようにすることをお勧めします。
public void setHttpContextFactory(BiFunctionSE<HttpMethod,URISE,org.apache.http.protocol.HttpContext> httpContextFactory)
HttpContext
を事前に作成するようにファクトリを構成します。 これは、たとえば、クライアント証明書ごとに異なる RestTemplate
を使用して、すべての呼び出しが同じクライアント ID に関連付けられた特定の RestTemplate
インスタンスを介して行われる相互 TLS 認証で役立つ場合があります。HttpClientContext.setUserToken(Object)
を使用して、すべてのリクエストに対して固定ユーザートークンを指定できます。
httpContextFactory
- 使用するコンテキストファクトリ public ClientHttpRequest createRequest(URISE uri, HttpMethod httpMethod) throws IOExceptionSE
ClientHttpRequestFactory
ClientHttpRequest
を作成します。 返されたリクエストは、ClientHttpRequest.execute()
を呼び出して書き込み、実行できます。
ClientHttpRequestFactory
の createRequest
uri
- リクエストを作成する URIhttpMethod
- 実行する HTTP メソッド IOExceptionSE
- I/O エラーの場合 @Nullable protected RequestConfig createRequestConfig(ObjectSE client)
RequestConfig
を作成します。null
を返して、カスタムリクエスト構成を設定せず、HttpClient
のデフォルトを使用する必要があることを示すことができます。デフォルトの実装は、クライアントのデフォルトを、このファクトリインスタンスのローカルカスタマイズ(存在する場合)とマージしようとします。
client
- チェックする HttpClient
(または HttpAsyncClient
)null
の場合があります)mergeRequestConfig(RequestConfig)
protected RequestConfig mergeRequestConfig(RequestConfig clientConfig)
clientConfig
- 現在の設定が保持している protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URISE uri)
httpMethod
- HTTP メソッド uri
- URIprotected void postProcessHttpRequest(HttpUriRequest request)
request
- 処理するリクエスト @Nullable protected org.apache.http.protocol.HttpContext createHttpContext(HttpMethod httpMethod, URISE uri)
HttpContext
を作成するテンプレートメソッド。 デフォルトの実装は null
を返します。
httpMethod
- HTTP メソッド uri
- URIpublic void destroy() throws ExceptionSE
ClientConnectionManager
の接続プールがあれば、それを閉じるシャットダウンフック。DisposableBean
の destroy
ExceptionSE
- シャットダウンエラーの場合。例外はログに記録されますが、再スローされず、他の Bean もリソースを解放できます。