我可以在Android项目中使用新版本的HttpClient吗?

时间:2013-05-19 05:38:12

标签: java android apache-httpclient-4.x

我需要在Android项目中使用HttpClient 4.2.5(添加到类路径中)。问题是在执行时,Android采用在其API中注册的默认HttpClient。这没有所有的类和方法,所以我有错误:

  

java.lang.NoSuchMethodError:org.apache.http.impl.client.DefaultHttpClient.setRedirectStrategy

如何修复此问题并使用类路径中的版本执行并忽略嵌入版本?我试图改变类路径库的顺序 - 这不起作用。

2 个答案:

答案 0 :(得分:1)

听起来Android正在通过其bootclasspath获取HttpClient。如果是这种情况,则类路径上JAR的顺序无关紧要。

如果这是“真正的Java(tm)”,你可以在启动JVM时使用另一个bootclasspath解决这个问题,但我不认为你可以在Android应用程序 1 中这样做

我能提出的最好的建议是,你可以查看HttpClient及其依赖项的源代码,调整整个软件包名称,并构建新的JAR。然后通过导入调整的包名修改您的应用代码以使用新类。


1 - 如果他们允许应用程序指定备用bootclasspath,它将为恶意应用程序提供新的潜在攻击媒介。我知道Android是假设来实现Davlik VM之外的安全性,但是删除VM中实现的第二道防线仍然是一个坏主意。功能

答案 1 :(得分:1)

您可以使用HttpClientAndroidLib。至于现在它基于HttpClient 4.2.3,但我认为它足以满足您的需求。此lib的作者通过重命名原始HttpClient的所有包来绕过限制。