替换已弃用的 DefaultHttpClient

Replacement for deprecated DefaultHttpClient

我在我当前的应用程序中使用 DefaultHttpClient

我阅读了这篇文章,其中指出 DefaultHttpClient 已弃用:http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html

指向这个网站:http://android-developers.blogspot.com/2011/09/androids-http-clients.html?m=1太旧了,写于2011年。

我将放弃使用 DefaultHttpClient 并阅读这篇使用 Apache 的 HttpClient 的文章:http://loopj.com/android-async-http/

我想知道这是否是 2015 年面向 android API 19 岁及以上人群编程的正确途径。

你应该切换到 HttpURLConnection。它需要稍微多一点的代码,但并不多。 在 SDK 22 中,他们已经弃用了 HttpClient,即使您以 SDK 19 为目标,在使用 22 编译时也会收到警告。

只是猜测(现在找不到任何来源)但我猜他们不会对已弃用的库进行任何修复,因此任何安全问题或错误都将保持未修复状态。

选项 1:Volley

Android 1.6 (API Level 4) or higher

Volley 的好处:

  • 自动安排网络请求。
  • 多个并发网络连接。
  • 具有标准 HTTP 缓存一致性的透明磁盘和内存响应缓存。
  • 支持请求优先级排序。
  • 取消请求API。您可以取消单个请求,也可以设置要取消的请求块或范围。
  • 易于定制,例如重试和退避。
  • 强大的排序功能使您可以轻松地使用从网络异步获取的数据正确填充 UI。
  • 调试和跟踪工具。

选项 2:OkHttp

OkHttp supports Android 2.3 and above. For Java, the minimum requirement is 1.7.

其文档中列出的一些功能:

  • HTTP/2 和 SPDY 支持允许对同一主机的所有请求共享一个套接字。
  • 连接池减少了请求延迟(如果 SPDY 不可用)。
  • 透明 GZIP 缩小下载大小。
  • 响应缓存完全避免重复请求的网络。

除了链接到该博客之外,docs recommend you use URL.openConnection 自 API 级别 1 以来一直存在。

好的,我等了一个星期,然后做了很多研究。我想我找到了答案。

我强烈建议初学者甚至专业 Android 程序员了解名为 Retrofit 的非常有用的库的存在:

http://square.github.io/retrofit/

中存在大量文档

Stack overflow 还提供了几乎所有需要通过网络联系远程 REST 服务的示例。

最好停止使用 HttpURLConnection 和 AsyncTask。 Retrofit 速度更快,支持所有开箱即用的故障情况。

是时候切换到 OkHttp 了,它可以高效地执行 HTTP 并使您的东西加载速度更快并节省成本bandwidth.It 支持同步阻塞调用和带回调的异步调用。

OkHttp 支持 Android 2.3 及以上版本。

将以下依赖项添加到您的 android 项目中。

compile 'com.squareup.okhttp:okhttp:2.4.0'

根据Google Docs

要继续使用 Apache HTTP 客户端,面向 Android 9 及更高版本的应用程序可以将以下内容添加到其 AndroidManifest.xml:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

这对我有用 - SDK 级别 28。