11

在调用 doGetConnection() 时,我的 httpclient 实现偶尔会引发异常。但是,我设置了以下超时

_moHttpClient.setHttpConnectionFactoryTimeout(30000);

看起来我的超时时间几乎没有被接收。还有其他地方我需要设置超时以确保这种行为不会再次发生

4

3 回答 3

10

你会抛出什么异常?

不要忘记您有两个超时来更改/检查。从HttpConnectionParams

setConnectionTimeout()
setSoTimeout()

因此您可以控制等待连接到服务器的时间,以及在超时之前对套接字的操作需要多长时间。

于 2009-02-25T10:51:35.910 回答
7
    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 集。也许我试图找出哪个实际上是活跃的,因为我在使用它时遇到了和你一样的问题。

以上是我们现在的实时代码,但我不能说它是否有效是因为它是正确的,还是因为天意对我微笑(而另一端通常总是可用的)。

于 2008-09-25T09:36:01.410 回答
4

cmparams.setSoTimeout(10000);

这个默认适用于所有 HttpClient。

params.setSoTimeout(5000);

而这个是针对特定的 httpclient 的。

于 2008-09-25T09:59:22.570 回答