我在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处于非活动状态时触发连接
那么我该如何设置等待响应的时间限制呢?
谢谢
http.socket。Timeout 设置两个连续报文之间的等待时间。因此,如果有数据传入非常慢,但仍然足够快,不会触发超时,连接将不会被切断。
也可以设置http.connection。Timeout 限制等待连接建立的时间。
但是,没有内置的方法来对整个请求的长度设置硬时间限制。