我需要在安卓应用中下载一个网页,但是我很难决定是使用安卓Apache HTTP客户端还是Java的URLConnection。
有什么想法吗?
我需要在安卓应用中下载一个网页,但是我很难决定是使用安卓Apache HTTP客户端还是Java的URLConnection。
有什么想法吗?
。
个人不喜欢这个决定,宁愿坚持使用HttpClient 4.1+,因为它更快,不存在那么多错误,而且会定期更新。虽然您无法将系统库升级到4.1版本,但可以将HttpClient jar包含到Android项目中(作为附加好处,这样可以使您不依赖于Google的错误修复和供应商更新)。然而,有一个缺陷:为了防止与内置库可能发生碰撞,您应该使用JarJar工具重命名httpclient包。结果,有人已经做到了这一点(重新打包的jar和Android库项目可供下载):
http://code.google.com/p/httpclientandroidlib/
这是将HttpClient 4.1重新打包为Android的版本。Android SDK中的HttpClient版本为4.0beta2。HttpClient已经进行了几次更新,进行了一些必要的错误修复,例如身份验证缓存。由于Google已将HttpClient标记为过时,支持Java标准HttpURLConnection,因此我创建了一个脚本来将Apache的HttpClient转换为Android库。HttpClient
。 但是,在某些情况和边缘情况下,我会退回到URLConnection
。 边缘情况的示例在这里和在这里
编辑
先前已经提出类似的问题:httpclient vs httpurlconnection。 我认为HttpUrlConnection
可能要快一些,因为HttpClient
是基于标准Java库构建的。但是,我发现编写和维护HttpClient
代码更快更容易。根据下面的评论,HttpClient
的核心元素已经进行了性能优化。从Gingerbread版本开始,使用HttpURLConnection是正确的选择,考虑到Apache HttpClient已经被弃用。(同时请注意,Android未使用HttpClient 4.1,即另一条评论中提到的版本)。
如果你发现Apache HttpClient更快,请在这里报告bug:http://code.google.com/p/android/issues/list
[HttpClient]
实现是稳定的,但是其庞大的 API 大大增加了我们在不破坏兼容性的情况下改进它的难度。Android 团队并没有积极地在 Apache HTTP Client 上工作。天哪,我还记得 Oleg 如何试图与 Android 团队同步进一步的项目开发。而现在他们决定弃用 HttpClient,这真是太可惜了。 - IdolonsetChunkedStreamingMode
,希望您连接的服务器支持。 - Archimedes Trajano