2013-09-27 55 views
2

我有基于apache HttpClient的java应用程序。我想在不更改应用程序的情况下增加套接字超时(应用程序中没有超时设置)。我怎样才能通过系统属性(或其他方式没有更改应用程序)呢?通过系统属性为HttpClient设置套接字超时

+0

或其他方式 - >或其他方式不改变应用程序 – cynepnaxa

回答

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); 

从属性文件读取超时并将其传递给此代码段。

+0

谢谢!但我想在不更改代码的情况下增加套接字超时。 – cynepnaxa

1

不是直接的,但你可以在代码中轻松地做到这一点:

httpClient.getParams().setParameter("http.socket.timeout", 
    Integer.getInteger("http.socket.timeout", <defaultValue>); 

(注意Integer.getInteger(String, int)从给定的系统属性中读取一个整数值)

+0

谢谢!但我想在不更改代码的情况下增加套接字超时。 – cynepnaxa