public class HttpComponentsClientHttpRequestFactory extends ObjectSE implements ClientHttpRequestFactory, DisposableBean
ClientHttpRequestFactory
実装。 事前構成された HttpClient
インスタンスを使用できます。認証、HTTP 接続プールなどで使用できる可能性があります。
注意 : Spring 4.0 以降では Apache HttpComponents 4.3 以降が必要です。
コンストラクターと説明 |
---|
HttpComponentsClientHttpRequestFactory() システムプロパティに基づいて、デフォルトの HttpClient を使用して HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。 |
HttpComponentsClientHttpRequestFactory(org.apache.http.client.HttpClient httpClient) 指定された HttpClient インスタンスを使用して HttpComponentsClientHttpRequestFactory の新しいインスタンスを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected org.apache.http.protocol.HttpContext | createHttpContext(HttpMethod httpMethod, URISE uri) 指定された HTTP メソッドと URI の HttpContext を作成するテンプレートメソッド。 |
protected org.apache.http.client.methods.HttpUriRequest | createHttpUriRequest(HttpMethod httpMethod, URISE uri) 指定された HTTP メソッドと URI 仕様の Commons HttpMethodBase オブジェクトを作成します。 |
ClientHttpRequest | createRequest(URISE uri, HttpMethod httpMethod) 指定された URI および HTTP メソッドの新しい ClientHttpRequest を作成します。 |
protected org.apache.http.client.config.RequestConfig | createRequestConfig(ObjectSE client) 特定のクライアントで使用するデフォルトの RequestConfig を作成します。 |
void | destroy() 基盤となる ClientConnectionManager の接続プールがある場合はそれを閉じるシャットダウンフック。 |
org.apache.http.client.HttpClient | getHttpClient() 同期実行に使用される HttpClient を返します。 |
protected org.apache.http.client.config.RequestConfig | mergeRequestConfig(org.apache.http.client.config.RequestConfig clientConfig) 必要に応じて、指定された HttpClient -level RequestConfig をファクトリレベルの RequestConfig とマージします。 |
protected void | postProcessHttpRequest(org.apache.http.client.methods.HttpUriRequest request) HttpComponentsClientHttpRequest の一部として返される前に HttpUriRequest を操作できるようにするテンプレートメソッド。 |
void | setBufferRequestBody(boolean bufferRequestBody) このリクエストファクトリがリクエストボディを内部でバッファリングするかどうかを示します。 |
void | setConnectionRequestTimeout(int connectionRequestTimeout) 基礎となる RequestConfig を使用して接続マネージャーに接続をリクエストするときに使用されるタイムアウトをミリ秒単位で設定します。 |
void | setConnectTimeout(int timeout) 基になる RequestConfig の接続タイムアウトを設定します。 |
void | setHttpClient(org.apache.http.client.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(org.apache.http.client.HttpClient httpClient)
HttpClient
インスタンスを使用して HttpComponentsClientHttpRequestFactory
の新しいインスタンスを作成します。httpClient
- このリクエストファクトリに使用する HttpClient インスタンス public void setHttpClient(org.apache.http.client.HttpClient httpClient)
HttpClient
を設定します。public org.apache.http.client.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
があり、特定の RestTemplate
インスタンスを介して行われるすべての呼び出しが同じクライアント ID に関連付けられている相互 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 org.apache.http.client.config.RequestConfig createRequestConfig(ObjectSE client)
RequestConfig
を作成します。null
を返して、カスタムリクエスト構成を設定する必要がなく、HttpClient
のデフォルトを使用する必要があることを示すことができます。デフォルトの実装は、クライアントのデフォルトを、このファクトリインスタンスのローカルカスタマイズ(存在する場合)とマージしようとします。
client
- チェックする HttpClient
(または HttpAsyncClient
)null
の場合があります)mergeRequestConfig(RequestConfig)
protected org.apache.http.client.config.RequestConfig mergeRequestConfig(org.apache.http.client.config.RequestConfig clientConfig)
HttpClient
-level RequestConfig
をファクトリレベルの RequestConfig
とマージします。clientConfig
- 現在の設定が保持している protected org.apache.http.client.methods.HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URISE uri)
httpMethod
- HTTP メソッド uri
- URIprotected void postProcessHttpRequest(org.apache.http.client.methods.HttpUriRequest request)
HttpComponentsClientHttpRequest
の一部として返される前に HttpUriRequest
を操作できるようにするテンプレートメソッド。デフォルトの実装は空です。
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 もリソースを解放できます。