added "connectTimeout" and "readTimeout" properties to SimpleClientHttpRequestFactory (SPR-8614)

This commit is contained in:
Juergen Hoeller
2011-08-12 22:56:12 +00:00
parent 45efe6184c
commit 03c267e93a

View File

@@ -30,6 +30,7 @@ import org.springframework.util.Assert;
* {@link ClientHttpRequestFactory} implementation that uses standard J2SE facilities.
*
* @author Arjen Poutsma
* @author Juergen Hoeller
* @since 3.0
* @see java.net.HttpURLConnection
* @see CommonsClientHttpRequestFactory
@@ -45,6 +46,10 @@ public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory
private int chunkSize = DEFAULT_CHUNK_SIZE;
private int connectTimeout = -1;
private int readTimeout = -1;
/**
* Set the {@link Proxy} to use for this request factory.
@@ -79,6 +84,26 @@ public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory
this.chunkSize = chunkSize;
}
/**
* Set the underlying URLConnection's connect timeout (in milliseconds).
* A timeout value of 0 specifies an infinite timeout.
* <p>Default is the system's default timeout.
* @see URLConnection#setConnectTimeout(int)
*/
public void setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
}
/**
* Set the underlying URLConnection's read timeout (in milliseconds).
* A timeout value of 0 specifies an infinite timeout.
* <p>Default is the system's default timeout.
* @see URLConnection#setReadTimeout(int)
*/
public void setReadTimeout(int readTimeout) {
this.readTimeout = readTimeout;
}
public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) throws IOException {
HttpURLConnection connection = openConnection(uri.toURL(), this.proxy);
@@ -114,6 +139,12 @@ public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory
* @throws IOException in case of I/O errors
*/
protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException {
if (this.connectTimeout >= 0) {
connection.setConnectTimeout(this.connectTimeout);
}
if (this.readTimeout >= 0) {
connection.setReadTimeout(this.readTimeout);
}
connection.setDoInput(true);
if ("GET".equals(httpMethod)) {
connection.setInstanceFollowRedirects(true);