我需要在Android项目中使用HttpClient 4.2.5(添加到类路径中)。问题是在执行时,Android采用在其API中注册的默认HttpClient。这没有所有的类和方法,所以我有错误:
java.lang.NoSuchMethodError:org.apache.http.impl.client.DefaultHttpClient.setRedirectStrategy
如何修复此问题并使用类路径中的版本执行并忽略嵌入版本?我试图改变类路径库的顺序 - 这不起作用。
答案 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的所有包来绕过限制。