0

我遇到了一个问题,即我们的 android 应用程序的 HTTP 请求经常超时,我需要为超时限制和重试次数找到一个合理的水平。

当前使用 apache DefaultHttpClient 实现的解决方案(不是我的实现)正在执行三次手动重试,超时时间增加,如下所示:

private static final int[] CONNECTION_TIMEOUTS = new int[] {4000, 5000, 10000};
private static final int[] SOCKET_TIMEOUTS = new int[] {5000, 8000, 15000};

我很难理解为什么当前实现使用增加超时的原因以及这是试图解决的问题。该应用程序大部分时间在手机连接到 3G 时使用。有没有人解释为什么每次重试增加超时会更好,或者也许有人对 3G 网络上的 HTTP 请求处理有最佳实践?

4

2 回答 2

2

我认为没有任何理由这样做,而不仅仅是从一开始就使用最大的超时时间。不过,也许其他人可以。

也许有点离题,但我想提请您注意这篇文章,它建议迁移到HttpURLConnection,因为它是并且将来会得到更好的支持。通读它,了解 Apache 库的优缺点,HttpURLConnection并决定是否值得切换。

于 2011-11-17T13:38:15.533 回答
1

如果网络非常慢,则可能需要很长时间才能连接。另一方面,即使在更快的网络上,连接也可能会失败。

因此,在快速网络中连接有点“丢失”的情况下,以较短的超时时间进行第一次尝试以更快地重试是有意义的。但我想不出超时持续增加的原因。

由于网络数量如此之多,因此几乎不可能收集有关典型连接和超时时间的良好数据。我假设您看到的数字不是凭经验选择的。

于 2011-11-17T13:37:23.597 回答