首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache HTTP客户端或URLConnection

Apache HTTP客户端或URLConnection
EN

Stack Overflow用户
提问于 2011-01-26 05:39:20
回答 2查看 67K关注 0票数 53

我需要在安卓应用程序上下载一个网页,我很难决定是使用安卓Apache HTTP客户端还是使用Java的URLConnection。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2011-10-12 23:56:18

谷歌已经悄悄地弃用了Apache HTTP客户端,因为Gingerbread:http://android-developers.blogspot.com/2011/09/androids-http-clients.html。虽然他们没有使用废弃的注释标记它,但他们建议您在新的应用程序中使用HttpURLConnection,如:it is where we [Google] will be spending our energy going forward

就我个人而言,我不喜欢这个决定,我宁愿坚持使用HttpClient 4.1+,因为它速度更快,错误更少,而且会定期更新。虽然您不能将系统库升级到4.1版,但您可以将HttpClient jar包含到您的Android项目中(作为额外的好处,这将允许您不依赖于Google bug修复和供应商更新)。然而,有一个陷阱:为了防止可能与内置库发生冲突,您应该使用JarJar工具重命名httpclient包。原来已经有人这样做了(重新打包的jar和Android库项目可以下载):

http://code.google.com/p/httpclientandroidlib/

这是针对安卓的HttpClient 4.1的重新打包。Android SDK中的HttpClient版本为4.0beta2。自从4.0测试版以来,HttpClient已经有了几次更新和一些急需的错误修复,比如身份验证缓存。

由于谷歌已经弃用了HttpClient,转而支持Java标准的HttpURLConnection,因此我创建了一个脚本,将Apache的HttpClient的一个现成版本转换为一个安卓库。对 HttpClient的库存更改

  • 将所有软件包org.apache.http重命名为ch.boye.httpclientandroidlib
  • 删除了所有依赖于org.apache.commons.logging

的类。*(身份验证)

  • 将org.apache.commons.codec.binary.Base64替换为android.util.Base64
  • 创建了一个新类HttpClientAndroidLog来替换org.ietf.
票数 45
EN

Stack Overflow用户

发布于 2011-03-11 03:27:05

在姜饼和以后的版本中,HttpURLConnection是最好的选择。考虑一下不推荐使用Apache HttpClient。(另请注意,安卓没有使用HttpClient 4.1,另一条评论中提到了这一点。)

如果您遇到Apache HttpClient速度更快的情况,请在此处将其报告为错误:http://code.google.com/p/android/issues/list

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4799151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档