Ami*_*Raz 53 java android urlconnection apache-commons-httpclient
我需要在Android应用程序上下载一个网页,我很难决定是否使用android apache http客户端或java的URLConnection.
有什么想法吗?
Ido*_*lon 45
自Gingerbread以来,Google一直默默地弃用Apache HTTP客户端: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错误修复和供应商更新的额外好处).然而,有一个缺陷:为了防止与内置库发生可能的冲突,您应该使用JarJar工具重命名httpclient包.原来有人已经这样做了(重新打包的jar和Android库项目可供下载):
http://code.google.com/p/httpclientandroidlib/
这是针对Android的HttpClient 4.1的重新打包.Android SDK中的HttpClient版本为4.0beta2.自从4.0beta以来,已经对HttpClient和一些急需的错误修正(如auth缓存)进行了一些更新.
由于Google已弃用HttpClient而支持Java标准HttpURLConnection,因此我创建了一个脚本,将Apache的HttpClient的股票版本转换为Android库.
库存HttpClient的变化
- 将所有包org.apache.http重命名为ch.boye.httpclientandroidlib
- 删除了依赖于org.ietf的所有类.*(SPNEGO身份验证)
- 用android.util.Base64替换了org.apache.commons.codec.binary.Base64
- 创建了一个新类HttpClientAndroidLog来替换org.apache.commons.logging
dav*_*e.c 27
对于大多数事情,我会说这HttpClient
是要走的路.然而,有些情况和边缘情况,我会回到a URLConnection
.边缘情况的例子在这里和 这里
编辑
之前已经提出类似的问题:httpclient vs httpurlconnection. 我认为它我会发现HttpUrlConnection
更快,因为HttpClient
它建立在标准Java库之上.但是,HttpClient
代码更快更容易编写和维护.根据下面的评论,核心要素HttpClient
已经过性能优化.
如果性能是一个主要问题,最好的办法是编写两个客户端,一个使用每种方法,然后对它们进行基准测试.如果您这样做,请告诉我们结果.
Ell*_*hes 14
在姜饼和后来,HttpURLConnection是要走的路.考虑不推荐使用Apache HttpClient.(另请注意,Android不使用HttpClient 4.1,在另一条评论中提及.)
如果您有Apache HttpClient更快的情况,请在此处将其报告为错误:http://code.google.com/p/android/issues/list
归档时间: |
|
查看次数: |
61237 次 |
最近记录: |