已弃用的DefaultHttpClient的替换

时间:2015-08-04 06:40:47

标签: android http client

我在我当前的应用中使用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的HttpClienthttp://loopj.com/android-async-http/

我想知道在2015年针对Android API 19及更高版本的编程时,这是否是正确的选择。

6 个答案:

答案 0 :(得分:9)

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

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

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

上有大量文件

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

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

答案 1 :(得分:5)

除了链接到该博客之外,docs建议您使用自API级别1以来一直存在的URL.openConnection

Alternative

答案 2 :(得分:3)

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

只是推测(现在找不到任何来源),但我想他们不会在已弃用的库中做任何修复,因此任何安全问题或错误都将保持不固定。

答案 3 :(得分:2)

选项1:Volley

  

Android 1.6(API等级4)或更高版本

排球的好处:

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

选项2:OkHttp

  

OkHttp支持Android 2.3及更高版本。对于Java,最低要求是1.7。

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

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

答案 4 :(得分:0)

是时候切换到OkHttp,它可以有效地处理HTTP并使你的东西加载更快并节省带宽。它支持同步阻塞调用和带回调的异步调用。

OkHttp支持Android 2.3及更高版本。

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

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

答案 5 :(得分:0)

根据Google Docs

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

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

这对我有用-SDK级别28。