【问题标题】:Replacement for deprecated DefaultHttpClient替换已弃用的 DefaultHttpClient
【发布时间】:2019-12-18 07:31:33
【问题描述】:

我在我当前的应用程序中使用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 及更高版本进行编程时,这是否是正确的路径。

【问题讨论】:

  • 你链接到的页面说:An asynchronous callback-based Http client for Android built on top of Apache’s HttpClient libraries,但是等等......你已经说过不推荐使用 Apache 的 HttpClient 所以......?
  • 顺便说一句:你听说过developer.android.com/training/volley/index.htmlsquare.github.io/okhttp 和类似的库吗?
  • 好吧,如果两者相同,那就更糟了。loopj.com/android-async-http 也被弃用了。那么现在人们用什么?
  • volley, okhttp 之类的,看我上面的评论
  • 从未听说过 Volley 或 okhttp。我看到另一个人发布了一个提到他们的答案。

标签: android http client


【解决方案1】:

好的,我等了一周,做了很多研究。我想我已经找到了答案。

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

大量文档存在于http://square.github.io/retrofit/

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

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

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      选项 1:Volley

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

      Volley 的好处:

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

      选项2:OkHttp

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

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

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

      【讨论】:

      • 上述选项的底层库是什么?我猜他们可能会使用同一个已弃用的 Apache 客户端库?
      • OkHttp 和 HttpUrlConnection 是低级 HTTP 客户端。 Volley 是一个封装了 OkHttp 或 HttpUrlConnection 的高级客户端。
      【解决方案5】:

      是时候切换到 OkHttp 了,它高效地执行 HTTP,使您的内容加载更快并节省带宽。它支持同步阻塞调用和带有回调的异步调用。

      OkHttp 支持 Android 2.3 及更高版本。

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

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

      【讨论】:

        【解决方案6】:

        根据Google Docs

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

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

        这对我有用 - SDK 级别 28。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-24
          • 1970-01-01
          相关资源
          最近更新 更多