在调用 doGetConnection() 时,我的 httpclient 实现偶尔会引发异常。但是,我设置了以下超时
_moHttpClient.setHttpConnectionFactoryTimeout(30000);
看起来我的超时时间几乎没有被接收。还有其他地方我需要设置超时以确保这种行为不会再次发生
在调用 doGetConnection() 时,我的 httpclient 实现偶尔会引发异常。但是,我设置了以下超时
_moHttpClient.setHttpConnectionFactoryTimeout(30000);
看起来我的超时时间几乎没有被接收。还有其他地方我需要设置超时以确保这种行为不会再次发生
你会抛出什么异常?
不要忘记您有两个超时来更改/检查。从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 的。