Android上的Apache HttpClient 4.1

5

有人尝试在Android上使用较新版本的Apache HttpClient吗? Android使用的HttpClient存在一个令人讨厌的bug,我想知道是否会在尝试重新分发HttpClient 4.1时遇到问题。

5个回答

6
我创建了一个脚本,将 HttpClient 的一个发布版本转换为 Android 库项目。 包名称已更名,以避免使用哪些类的混淆。
ThreadSafeClientConnManager 和 Scheme 也可以正常工作。
请看:httpclientandroidlib

dirkboye:如何自己重新打包?https://dev59.com/BHvaa4cB1Zd3GeqPB1NA 或者您能否更新库以使用HttpClient 4.3.1? - Stuck

2

这不是一个好主意,尤其是如果客户端的包和类名在新版本中没有更改。很可能你无法预测使用哪个类(旧的还是新的)。


如果您使用Maven Shade插件,您可以将所有内容移动到不同的包中,并安全地使用它。 - Manfred Moser

2

如果有人感兴趣的话-我使用Apache HttpClient 4.01重建了我的应用程序,一切似乎都正常工作。 应用程序仅增加了100kB。


你能给我们提供一些逐步指导,告诉我们如何构建针对 HTTPClient 4.x 而非内置版本的应用程序吗? - Ognyan
我的版本已经增加了250kB(Apache HttpClient 4.2.1),最新的httpclientandroidlib版本是2012年7月发布的。 - Twilite
Ogre_BGR:你找到解决方案了吗?我正在尝试自己重新打包以便使用 HttpClient 4.3.1: https://dev59.com/BHvaa4cB1Zd3GeqPB1NA - Stuck

1

有一个官方的 Android 版本的 Apache HttpClient,你可以在Maven 仓库中找到它(或搜索 "httpclient-android")。

不幸的是,Android 自带了一个 Apache HttpClient 的分支版本,并且被固定在 4.0 版本。


0

我在使用ThreadSafeClientConnManager和Scheme时出现了一些令人讨厌的运行时错误,之前我使用4.1没有问题。

ERROR/dalvikvm(1077): Could not find method org.apache.http.conn.scheme.Scheme.<init>, referenced from method com.example.MyActivity.download
WARN/dalvikvm(1077): VFY: unable to resolve direct method 3290: Lorg/apache/http/conn/scheme/Scheme;.<init> (Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
WARN/dalvikvm(1077): VFY:  rejecting opcode 0x70 at 0x0035

我猜测在Android API中使用了旧版本的Scheme,其构造函数不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接