DefaultHttpClient超时值和android上的重试次数

时间:2011-11-17 13:28:42

标签: android apache timeout httpclient connection-timeout

我遇到的问题是我们的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请求处理的最佳实践?

2 个答案:

答案 0 :(得分:2)

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

也许有点偏离主题,但我想提请你注意this article,这意味着要移植到HttpURLConnection,并且将来会得到更好的支持。整体阅读,了解HttpURLConnection优于Apache库的优缺点,并决定是否值得切换。

答案 1 :(得分:1)

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

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

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