我在WebHarvest配置文件中使用下面的代码为WebHarvest中的http元素定义超时(Web收割机使用了雅加达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:
只有当HTTP连接上没有活动时,
SO_TIMEOUT才会启动
所以,我怎样才能为等待回应设定一个时限呢?
谢谢
发布于 2011-12-27 08:46:15
http.socket.timeout设置在两个连续数据包之间等待的时间。因此,如果数据输入非常缓慢,但仍然足够快,无法触发超时,则连接将不会被切断。
您还可以设置http.connection.timeout来限制等待连接建立的时间。
然而,没有内置的方式来设定整个请求长度的硬时间限制。
https://stackoverflow.com/questions/8581696
复制相似问题