30
30
* {@link ClientHttpRequestFactory} implementation that uses standard J2SE facilities.
31
31
*
32
32
* @author Arjen Poutsma
33
+ * @author Juergen Hoeller
33
34
* @since 3.0
34
35
* @see java.net.HttpURLConnection
35
36
* @see CommonsClientHttpRequestFactory
@@ -38,6 +39,10 @@ public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory
38
39
39
40
private Proxy proxy ;
40
41
42
+ private int connectTimeout = -1 ;
43
+
44
+ private int readTimeout = -1 ;
45
+
41
46
42
47
/**
43
48
* Set the {@link Proxy} to use for this request factory.
@@ -46,9 +51,29 @@ public void setProxy(Proxy proxy) {
46
51
this .proxy = proxy ;
47
52
}
48
53
54
+ /**
55
+ * Set the underlying URLConnection's connect timeout (in milliseconds).
56
+ * A timeout value of 0 specifies an infinite timeout.
57
+ * <p>Default is the system's default timeout.
58
+ * @see URLConnection#setConnectTimeout(int)
59
+ */
60
+ public void setConnectTimeout (int connectTimeout ) {
61
+ this .connectTimeout = connectTimeout ;
62
+ }
63
+
64
+ /**
65
+ * Set the underlying URLConnection's read timeout (in milliseconds).
66
+ * A timeout value of 0 specifies an infinite timeout.
67
+ * <p>Default is the system's default timeout.
68
+ * @see URLConnection#setReadTimeout(int)
69
+ */
70
+ public void setReadTimeout (int readTimeout ) {
71
+ this .readTimeout = readTimeout ;
72
+ }
73
+
49
74
50
75
public ClientHttpRequest createRequest (URI uri , HttpMethod httpMethod ) throws IOException {
51
- HttpURLConnection connection = openConnection (uri .toURL (), proxy );
76
+ HttpURLConnection connection = openConnection (uri .toURL (), this . proxy );
52
77
prepareConnection (connection , httpMethod .name ());
53
78
return new SimpleClientHttpRequest (connection );
54
79
}
@@ -76,6 +101,12 @@ protected HttpURLConnection openConnection(URL url, Proxy proxy) throws IOExcept
76
101
* @throws IOException in case of I/O errors
77
102
*/
78
103
protected void prepareConnection (HttpURLConnection connection , String httpMethod ) throws IOException {
104
+ if (this .connectTimeout >= 0 ) {
105
+ connection .setConnectTimeout (this .connectTimeout );
106
+ }
107
+ if (this .readTimeout >= 0 ) {
108
+ connection .setReadTimeout (this .readTimeout );
109
+ }
79
110
connection .setDoInput (true );
80
111
if ("GET" .equals (httpMethod )) {
81
112
connection .setInstanceFollowRedirects (true );
0 commit comments