代码之家  ›  专栏  ›  技术社区  ›  synic

httpclient-设置“全局”套接字超时,并为每个请求设置单独的超时

  •  1
  • synic  · 技术社区  · 14 年前

    对于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 回复  |  直到 12 年前
        1
  •  2
  •   Andrew L    14 年前

    如果您使用的是httpclient 4.0,则可以执行以下操作:

    mClient = new DefaultHttpClient(connectionManager, params) {
      protected HttpParams determineParams(HttpRequest req) {
        //Fill in your impl here
     }
    
        2
  •  2
  •   Marc Gravell    14 年前

    您可以简单地在请求对象上设置这些参数。有关详细信息,请参阅: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e391