## org.springframework.http.client
Class SimpleClientHttpRequestFactory

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

All Implemented Interfaces:
  ClientHttpRequestFactory

    public class SimpleClientHttpRequestFactory

extends Object
implements ClientHttpRequestFactory

`ClientHttpRequestFactory` implementation that uses standard J2SE facilities.

Since:
  3.0
Author:
  Arjen Poutsma, Juergen Hoeller
See Also:
  `HttpURLConnection`, `CommonsClientHttpRequestFactory`

Constructor Summary
`SimpleClientHttpRequestFactory()`

Method Summary
`ClientHttpRequest` `createRequest(URI uri, HttpMethod httpMethod)` Create a new `ClientHttpRequest` for the specified URI and HTTP method.
`protected HttpURLConnection` `openConnection(URL url, Proxy proxy)` Opens and returns a connection to the given URL.
`protected void` `prepareConnection(HttpURLConnection connection, String httpMethod)` Template method for preparing the given `HttpURLConnection`.
`void` `setBufferRequestBody(boolean bufferRequestBody)` Indicates whether this request factory should buffer the request body internally.
`void` `setChunkSize(int chunkSize)` Sets the number of bytes to write in each chunk when not buffering request bodies locally.
`void` `setConnectTimeout(int connectTimeout)` Set the underlying URLConnection's connect timeout (in milliseconds).
`void` `setProxy(Proxy proxy)` Set the `Proxy` to use for this request factory.
`void` `setReadTimeout(int readTimeout)` Set the underlying URLConnection's read timeout (in milliseconds).

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

Constructor Detail

### SimpleClientHttpRequestFactory

    public SimpleClientHttpRequestFactory()

Method Detail

### setProxy

    public void setProxy(Proxy proxy)

  Set the `Proxy` to use for this request factory.

### setBufferRequestBody

    public void setBufferRequestBody(boolean bufferRequestBody)

  Indicates whether this request factory should buffer the request body internally.

  Default is `true`. When sending large amounts of data via POST or PUT, it is recommended to change this property to `false`, so as not to run out of memory. This will result in a `ClientHttpRequest` that either streams directly to the underlying `HttpURLConnection` (if the `Content-Length` is known in advance), or that will use "Chunked transfer encoding" (if the `Content-Length` is not known in advance).

  See Also:
    `setChunkSize(int)`, `HttpURLConnection.setFixedLengthStreamingMode(int)`

### setChunkSize

    public void setChunkSize(int chunkSize)

  Sets the number of bytes to write in each chunk when not buffering request bodies locally.

  Note that this parameter is only used when `bufferRequestBody` is set to `false`, and the `Content-Length` is not known in advance.

  See Also:
    `setBufferRequestBody(boolean)`

### setConnectTimeout

    public void setConnectTimeout(int connectTimeout)

  Set the underlying URLConnection's connect timeout (in milliseconds). A timeout value of 0 specifies an infinite timeout.

  Default is the system's default timeout.

  See Also:
    `URLConnection.setConnectTimeout(int)`

### setReadTimeout

    public void setReadTimeout(int readTimeout)

  Set the underlying URLConnection's read timeout (in milliseconds). A timeout value of 0 specifies an infinite timeout.

  Default is the system's default timeout.

  See Also:
    `URLConnection.setReadTimeout(int)`

### 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

### openConnection

    protected HttpURLConnection openConnection(URL url,
                                               Proxy proxy)
                                        throws IOException

  Opens and returns a connection to the given URL.

  The default implementation uses the given proxy - if any - to open a connection.

  Parameters:
    `url` - the URL to open a connection to
    `proxy` - the proxy to use, may be `null`
  Returns:
    the opened connection
  Throws:
    `IOException` - in case of I/O errors

### prepareConnection

    protected void prepareConnection(HttpURLConnection connection,
                                     String httpMethod)
                              throws IOException

  Template method for preparing the given `HttpURLConnection`.

  The default implementation prepares the connection for input and output, and sets the HTTP method.

  Parameters:
    `connection` - the connection to prepare
    `httpMethod` - the HTTP request method (`GET`, `POST`, etc.)
  Throws:
    `IOException` - in case of I/O errors