## org.springframework.http.client
Class HttpComponentsClientHttpRequestFactory

    java.lang.Object
      org.springframework.http.client.HttpComponentsClientHttpRequestFactory

All Implemented Interfaces:
  DisposableBean, ClientHttpRequestFactory

    public class HttpComponentsClientHttpRequestFactory

extends Object
implements ClientHttpRequestFactory, 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.

Since:
  3.1
Author:
  Oleg Kalnichevski, Arjen Poutsma

Constructor Summary
`HttpComponentsClientHttpRequestFactory()` Create a new instance of the HttpComponentsClientHttpRequestFactory with a default `HttpClient` that uses a default `ThreadSafeClientConnManager`.
`HttpComponentsClientHttpRequestFactory(org.apache.http.client.HttpClient httpClient)` Create a new instance of the HttpComponentsClientHttpRequestFactory with the given `HttpClient` instance.

Method Summary
`protected org.apache.http.protocol.HttpContext` `createHttpContext(HttpMethod httpMethod, URI uri)` Template methods that creates a `HttpContext` for the given HTTP method and URI.
`protected org.apache.http.client.methods.HttpUriRequest` `createHttpUriRequest(HttpMethod httpMethod, URI uri)` Create a Commons HttpMethodBase object for the given HTTP method and URI specification.
`ClientHttpRequest` `createRequest(URI uri, HttpMethod httpMethod)` Create a new `ClientHttpRequest` for the specified URI and HTTP method.
`void` `destroy()` Shutdown hook that closes the underlying `ClientConnectionManager`'s connection pool, if any.
`org.apache.http.client.HttpClient` `getHttpClient()` Return the `HttpClient` used by this factory.
`protected void` `postProcessHttpRequest(org.apache.http.client.methods.HttpUriRequest request)` Template method that allows for manipulating the `HttpUriRequest` before it is returned as part of a `HttpComponentsClientHttpRequest`.
`void` `setConnectTimeout(int timeout)` Set the connection timeout for the underlying HttpClient.
`void` `setHttpClient(org.apache.http.client.HttpClient httpClient)` Set the `HttpClient` used by this factory.
`void` `setReadTimeout(int timeout)` Set the socket read timeout for the underlying HttpClient.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### HttpComponentsClientHttpRequestFactory

    public HttpComponentsClientHttpRequestFactory()

  Create a new instance of the HttpComponentsClientHttpRequestFactory with a default `HttpClient` that uses a default `ThreadSafeClientConnManager`.

### HttpComponentsClientHttpRequestFactory

    public HttpComponentsClientHttpRequestFactory(org.apache.http.client.HttpClient httpClient)

  Create a new instance of the HttpComponentsClientHttpRequestFactory with the given `HttpClient` instance.

  Parameters:
    `httpClient` - the HttpClient instance to use for this request factory

Method Detail

### setHttpClient

    public void setHttpClient(org.apache.http.client.HttpClient httpClient)

  Set the `HttpClient` used by this factory.

### getHttpClient

    public org.apache.http.client.HttpClient getHttpClient()

  Return the `HttpClient` used by this factory.

### setConnectTimeout

    public void setConnectTimeout(int timeout)

  Set the connection timeout for the underlying HttpClient. A timeout value of 0 specifies an infinite timeout.

  Parameters:
    `timeout` - the timeout value in milliseconds

### setReadTimeout

    public void setReadTimeout(int timeout)

  Set the socket read timeout for the underlying HttpClient. A timeout value of 0 specifies an infinite timeout.

  Parameters:
    `timeout` - the timeout value in milliseconds

### createRequest

    public ClientHttpRequest createRequest(URI uri,
                                           HttpMethod httpMethod)
                                    throws IOException

  Description copied from interface: `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()`.

  Specified by:
    `createRequest` in interface `ClientHttpRequestFactory`
  Parameters:
    `uri` - the URI to create a request for
    `httpMethod` - the HTTP method to execute
  Returns:
    the created request
  Throws:
    `IOException` - in case of I/O errors

### createHttpUriRequest

    protected org.apache.http.client.methods.HttpUriRequest createHttpUriRequest(HttpMethod httpMethod,
                                                                                 URI uri)

  Create a Commons HttpMethodBase object for the given HTTP method and URI specification.

  Parameters:
    `httpMethod` - the HTTP method
    `uri` - the URI
  Returns:
    the Commons HttpMethodBase object

### postProcessHttpRequest

    protected void postProcessHttpRequest(org.apache.http.client.methods.HttpUriRequest request)

  Template method that allows for manipulating the `HttpUriRequest` before it is returned as part of a `HttpComponentsClientHttpRequest`.

  The default implementation is empty.

  Parameters:
    `request` - the request to process

### createHttpContext

    protected org.apache.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`.

  Parameters:
    `httpMethod` - the HTTP method
    `uri` - the URI
  Returns:
    the http context

### destroy

    public void destroy()

  Shutdown hook that closes the underlying `ClientConnectionManager`'s connection pool, if any.

  Specified by:
    `destroy` in interface `DisposableBean`