HttpClient - 设置“全局”套接字超时,以及每个请求单独的超时

时间:2010-06-09 05:15:25

标签: java apache-commons-httpclient

使用HttpClient,我使用以下命令设置默认套接字/连接超时:

HttpParams params = new BasicHttpParams();

HttpConnectionParams.setSoTimeout(params, 30000);
HttpConnectionParams.setConnectionTimeout(params, 30000);

mClient = new DefaultHttpClient(connectionManager, params);

我想知道我是否可以基于每个请求覆盖这些值?

编辑:这会有用吗?

HttpParams params = req.getParams(); // req is an HttpRequest object
HttpConnectionParams.setSoTimeout(params, 60000);
HttpConnectionParams.setConnectionTimeout(params, 60000);

我试过了,但似乎很难测试/创建超时的情况。

2 个答案:

答案 0 :(得分:2)

如果您使用的是HttpClient 4.0,则可以这样做:

mClient = new DefaultHttpClient(connectionManager, params) {
  protected HttpParams determineParams(HttpRequest req) {
    //Fill in your impl here
 }

答案 1 :(得分:2)

您只需在请求对象上设置这些参数即可。详情见: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e391