1

我在 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 代码本身或 HttpClient 来做到这一点:

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

但我得到了同样的结果!
这样

SO_TIMEOUT 仅在 HTTP 连接不活动时才会启动

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

谢谢

4

1 回答 1

1

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

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

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

于 2011-12-27T08:46:15.910 回答