通过系统属性为HttpClient设置javasocket超时 3 周,3 日 Questions & Answers 3315 我有基于ApacheHttpClient的java应用程序。我想在不更改应用程序的情况下减少socket超时(应用程序中没有可用的超时设置)。如何通过系统属性(或其他不改变应用程序的方式)实现
# 1 楼答案 不直接,但您可以通过代码轻松完成: httpClient.getParams().setParameter("http.socket.timeout", Integer.getInteger("http.socket.timeout", <defaultValue>); (注意Integer.getInteger(String, int)从给定的系统属性中读取一个整数值)
# 2 楼答案 您可以使用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); 从属性文件中读取超时,并将其传递给此代码段
# 1 楼答案
不直接,但您可以通过代码轻松完成:
(注意
Integer.getInteger(String, int)
从给定的系统属性中读取一个整数值)# 2 楼答案
您可以使用spring读取系统属性,如下所示:
获得超时值后,可以将超时设置为HttpClient
从属性文件中读取超时,并将其传递给此代码段