【发布时间】:2008-09-25 09:34:02
【问题描述】:
我的 httpclient 实现在调用 doGetConnection() 时偶尔会抛出异常。但是,我设置了以下超时时间
_moHttpClient.setHttpConnectionFactoryTimeout(30000);
看起来我的超时时间几乎没有被占用。还有其他地方我需要设置超时以确保这种行为不会再次发生
【问题讨论】:
标签: java httpclient
我的 httpclient 实现在调用 doGetConnection() 时偶尔会抛出异常。但是,我设置了以下超时时间
_moHttpClient.setHttpConnectionFactoryTimeout(30000);
看起来我的超时时间几乎没有被占用。还有其他地方我需要设置超时以确保这种行为不会再次发生
【问题讨论】:
标签: java httpclient
你会抛出什么异常?
不要忘记您有 两次 超时来更改/检查。来自HttpConnectionParams
setConnectionTimeout()
setSoTimeout()
这样您就可以控制等待连接到服务器的时间,以及套接字上的操作在超时之前需要多长时间。
【讨论】:
HttpConnectionManagerParams cmparams = new HttpConnectionManagerParams();
cmparams.setSoTimeout(10000);
cmparams.setTcpNoDelay(true);
HttpConnectionManager manager = new SimpleHttpConnectionManager();
manager.setParams(cmparams);
params = new HttpClientParams();
params.setSoTimeout(5000);
client = new HttpClient(params, manager);
我想知道为什么我设置了两个不同的 SoTimeouts。也许我是想找出哪个是真正活跃的,因为我在使用时遇到了和你一样的问题。
以上内容现在在我们这里是实时代码,但我不能说它是否有效是因为它是正确的,还是因为天意在对我微笑(而另一端通常总是可用的)。
【讨论】:
cmparams.setSoTimeout(10000);
这个默认是给所有HttpClient的。
params.setSoTimeout(5000);
这个是针对特定的httpclient的。
【讨论】: