类 HttpComponentsClientHttpRequestFactory

java.lang.Object
cn.taketoday.http.client.HttpComponentsClientHttpRequestFactory
所有已实现的接口:
cn.taketoday.beans.factory.DisposableBean, ClientHttpRequestFactory

public class HttpComponentsClientHttpRequestFactory extends Object implements ClientHttpRequestFactory, cn.taketoday.beans.factory.DisposableBean
ClientHttpRequestFactory implementation that uses Apache HttpComponents HttpClient to create requests.

Allows to use a pre-configured HttpClient instance - potentially with authentication, HTTP connection pooling, etc.

NOTE: Requires Apache HttpComponents 5.1 or higher.

从以下版本开始:
4.0
作者:
Oleg Kalnichevski, Arjen Poutsma, Stephane Nicoll, Juergen Hoeller, Harry Yang
  • 字段详细资料

    • httpClient

      private HttpClient httpClient
    • connectTimeout

      private long connectTimeout
    • connectionRequestTimeout

      private long connectionRequestTimeout
    • httpContextFactory

      @Nullable private BiFunction<HttpMethod,URI,org.apache.hc.core5.http.protocol.HttpContext> httpContextFactory
  • 构造器详细资料

    • HttpComponentsClientHttpRequestFactory

      public HttpComponentsClientHttpRequestFactory()
      Create a new instance of the HttpComponentsClientHttpRequestFactory with a default HttpClient based on system properties.
    • HttpComponentsClientHttpRequestFactory

      public HttpComponentsClientHttpRequestFactory(HttpClient httpClient)
      Create a new instance of the HttpComponentsClientHttpRequestFactory with the given HttpClient instance.
      参数:
      httpClient - the HttpClient instance to use for this request factory
  • 方法详细资料

    • setHttpClient

      public void setHttpClient(HttpClient httpClient)
      Set the HttpClient used for synchronous execution.
    • getHttpClient

      public HttpClient getHttpClient()
      Return the HttpClient used for synchronous execution.
    • setConnectTimeout

      public void setConnectTimeout(int connectTimeout)
      Set the connection timeout for the underlying RequestConfig. A timeout value of 0 specifies an infinite timeout.

      Additional properties can be configured by specifying a RequestConfig instance on a custom HttpClient.

      This options does not affect connection timeouts for SSL handshakes or CONNECT requests; for that, it is required to use the SocketConfig on the HttpClient itself.

      参数:
      connectTimeout - the timeout value in milliseconds
      另请参阅:
    • setConnectTimeout

      public void setConnectTimeout(Duration connectTimeout)
      Set the connection timeout for the underlying RequestConfig. A timeout value of 0 specifies an infinite timeout.

      Additional properties can be configured by specifying a RequestConfig instance on a custom HttpClient.

      This options does not affect connection timeouts for SSL handshakes or CONNECT requests; for that, it is required to use the SocketConfig on the HttpClient itself.

      参数:
      connectTimeout - the timeout value in milliseconds
      另请参阅:
    • setConnectionRequestTimeout

      public void setConnectionRequestTimeout(int connectionRequestTimeout)
      Set the timeout in milliseconds used when requesting a connection from the connection manager using the underlying RequestConfig. A timeout value of 0 specifies an infinite timeout.

      Additional properties can be configured by specifying a RequestConfig instance on a custom HttpClient.

      参数:
      connectionRequestTimeout - the timeout value to request a connection in milliseconds
      另请参阅:
    • setConnectionRequestTimeout

      public void setConnectionRequestTimeout(Duration connectionRequestTimeout)
      Set the timeout in milliseconds used when requesting a connection from the connection manager using the underlying RequestConfig. A timeout value of 0 specifies an infinite timeout.

      Additional properties can be configured by specifying a RequestConfig instance on a custom HttpClient.

      参数:
      connectionRequestTimeout - the timeout value to request a connection in milliseconds
      另请参阅:
    • setHttpContextFactory

      public void setHttpContextFactory(BiFunction<HttpMethod,URI,org.apache.hc.core5.http.protocol.HttpContext> httpContextFactory)
      Configure a factory to pre-create the HttpContext for each request.

      This may be useful for example in mutual TLS authentication where a different RestTemplate for each client certificate such that all calls made through a given RestTemplate instance as associated for the same client identity. HttpClientContext.setUserToken(Object) can be used to specify a fixed user token for all requests.

      参数:
      httpContextFactory - the context factory to use
    • createRequest

      public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) throws IOException
      从接口复制的说明: ClientHttpRequestFactory
      Create a new ClientHttpRequest for the specified URI and HTTP method.

      The returned request can be written to, and then executed by calling ClientHttpRequest.execute().

      指定者:
      createRequest 在接口中 ClientHttpRequestFactory
      参数:
      uri - the URI to create a request for
      httpMethod - the HTTP method to execute
      返回:
      the created request
      抛出:
      IOException - in case of I/O errors
    • createRequestConfig

      @Nullable protected RequestConfig createRequestConfig(Object client)
      Create a default RequestConfig to use with the given client. Can return null to indicate that no custom request config should be set and the defaults of the HttpClient should be used.

      The default implementation tries to merge the defaults of the client with the local customizations of this factory instance, if any.

      参数:
      client - the HttpClient (or HttpAsyncClient) to check
      返回:
      the actual RequestConfig to use (may be null)
      另请参阅:
    • mergeRequestConfig

      protected RequestConfig mergeRequestConfig(RequestConfig clientConfig)
      Merge the given HttpClient-level RequestConfig with the factory-level configuration, if necessary.
      参数:
      clientConfig - the config held by the current
      返回:
      the merged request config
    • createHttpUriRequest

      protected org.apache.hc.core5.http.ClassicHttpRequest createHttpUriRequest(HttpMethod httpMethod, URI uri)
      Create a Commons HttpMethodBase object for the given HTTP method and URI specification.
      参数:
      httpMethod - the HTTP method
      uri - the URI
      返回:
      the Commons HttpMethodBase object
    • postProcessHttpRequest

      protected void postProcessHttpRequest(org.apache.hc.core5.http.ClassicHttpRequest request)
      Template method that allows for manipulating the ClassicHttpRequest before it is returned as part of a HttpComponentsClientHttpRequest.

      The default implementation is empty.

      参数:
      request - the request to process
    • createHttpContext

      @Nullable protected org.apache.hc.core5.http.protocol.HttpContext createHttpContext(HttpMethod httpMethod, URI uri)
      Template methods that creates a HttpContext for the given HTTP method and URI.

      The default implementation returns null.

      参数:
      httpMethod - the HTTP method
      uri - the URI
      返回:
      the http context
    • destroy

      public void destroy() throws Exception
      Shutdown hook that closes the underlying ClientConnectionManager's connection pool, if any.
      指定者:
      destroy 在接口中 cn.taketoday.beans.factory.DisposableBean
      抛出:
      Exception