org.springframework.http.client
Class HttpComponentsClientHttpRequestFactory

java.lang.Object
  extended by 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