【问题标题】:Setting http timeout to jakarta HttpClient将 http 超时设置为 jakarta HttpClient
【发布时间】:2011-12-20 20:42:38
【问题描述】:

我在 WebHarvest 配置文件中使用下面的代码为 WebHarvest 中的 http 元素定义超时(Webharvest 使用 Jakarta HttpClient)。
但是,当我将其设置为 20000 时,大约需要 40-50 秒才能达到超时!
当我将它设置为 30000 时,超时永远不会达到(至少在我等待的 2 分钟内)!!
我只需要限制响应等待时间。

<var-def name="WTimeOut">20000</var-def>
<script language="javascript"> 
       var tmot=WTimeOut.toString(); 
       http.client.params.soTimeout = tmot; 
       http.client.params.connectionManagerTimeout = tmot;
       http.client.httpConnectionManager.params.connectionTimeout = tmot; 
</script> 

我也尝试通过 java 代码本身 o HttpClient 使用此代码:

HttpClient whClient = scraper.getHttpClientManager().getHttpClient();
whClient.getParams().setParameter("http.connection-manager.timeout", (long)20000);
whClient.getParams().setParameter("http.socket.timeout",(int)20000);

但我得到了相同的结果!
作为this

SO_TIMEOUT 仅在 HTTP 处于不活动状态时才会启动 连接

那么我可以做些什么来设置等待响应的时间限制?

谢谢

【问题讨论】:

    标签: java timeout httpclient webharvest


    【解决方案1】:

    http.socket.timeout 设置两个连续数据包之间的等待时间。所以如果有数据进来很慢,但仍然足够快不会触发超时,连接不会被切断。

    您还可以设置 http.connection.timeout 来限制等待建立连接的时间。

    但是,没有内置方法可以对整个请求的长度设置硬性时间限制。

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多