我有基于 apache HttpClient 的 java 应用程序。我想在不更改应用程序的情况下增加套接字超时(应用程序中没有可用的超时设置)。我如何通过系统属性(或其他不更改应用程序的方式)来做到这一点?
问问题
3382 次
2 回答
2
不是直接的,但您可以在代码中轻松完成:
httpClient.getParams().setParameter("http.socket.timeout",
Integer.getInteger("http.socket.timeout", <defaultValue>);
(注意Integer.getInteger(String, int)
从给定的系统属性中读取一个整数值)
于 2013-09-27T09:49:58.603 回答
1
您可以使用 spring 读取系统属性,如下所示:
<bean id="yourBean" class="com.company.YourBean">
<property name="httpClientTimeout"
value="#{ systemProperties['httpclient.timeout'] }"/>
<!-- where httpclient.timeout is system variable-->
<!-- other properties goes here....-->
</bean>
获得超时值后,您可以将超时设置为 HttpClient。
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, timeout);
HttpConnectionParams.setSoTimeout(params, timeout);
DefaultHttpClient httpclient = new DefaultHttpClient(params);
HttpPost httpPost = new HttpPost(requestURL);
httpPost.setEntity(new StringEntity(requestBody));
HttpResponse response = httpclient.execute(httpPost);
从属性文件中读取超时并将其传递给此代码片段。
于 2013-09-27T09:38:51.187 回答