【问题标题】:Android HttpURLConnection, HttpClient coexistence and connections limitsAndroid HttpURLConnection、HttpClient 共存和连接限制
【发布时间】:2013-06-05 17:12:30
【问题描述】:

我已经接管了维护一个 Android 应用程序,该应用程序已构建为同时使用线程中的 HttpURLConnection 和 HttpClient。每次都使用一个新实例,而不是重用一个共享实例(我知道这不是好的做法,至少对于 HttpClient 而言,我打算更改它)。大多数连接都连接到同一台服务器;我发现当一些连接忙时,其他线程被阻塞。 我从Android HttpClient performance 了解到,HttpClient 默认只允许两个并发连接到同一目标主机。 我还从URLConnection or HTTPClient : Which offers better functionality and more efficiency? 的答案中看到,使用 HttpUrlConnection 到同一主机的并发连接会被序列化。

如何更改 HttpClient 和 HttpUrlConnection 的并发连接数限制? HttpURLConnection 和 HttpClient 是否可以毫无问题地共存于同一个应用程序中,还是只使用其中一个会更好? 谢谢。

【问题讨论】:

  • 达米安,你决定做什么?

标签: android http


【解决方案1】:

Google 已经声明 HttpClient 不再在 Android 中维护,这基本上意味着它可能会继续存在,但他们不会对其进行增强。他们更喜欢人们使用 HttpUrlConnection,HttpUrlConnection 有一些错误,具体取决于 Androind 的版本:((您可以在 Android 开发者博客http://android-developers.blogspot.ca/2011/09/androids-http-clients.html 上阅读有关这两种选择的更多信息)

就我个人而言,我会看看 OkHttp(by Square),因为它几乎可以替代 HttpUrlConnection,但它提供连接池和 SPDY 支持。

http://square.github.io/okhttp/

【讨论】:

  • 谢谢。我查看了 OkHttp,但我还不能确定它是否也对同一主机的并发连接施加了限制。我将继续在各种连接负载下测试该应用程序。
  • 我从 HttpClient 切换到 OkHttpClient 并且不再出现 I/O 异常:java.io.EOFException: at libcore.io.Streams.readAsciiLine(Streams.java:203) (Jelly Bean)。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多