DefaultHttpClient超时值和重试



我面临一个问题,我们的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请求处理的最佳实践?

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

可能有点跑题,但我想提请您注意这篇文章,它建议迁移到HttpURLConnection,因为它现在和将来会得到更好的支持。阅读全文,了解HttpURLConnection相对于Apache库的优缺点,并决定是否值得转换。

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

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

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

相关内容

  • 没有找到相关文章

最新更新