0

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

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

如何解决此问题并使用类路径中的版本执行并忽略嵌入式版本?我试图改变类路径库的顺序 - 这没有用。

4

2 回答 2

1

听起来 Android 正在通过其引导类路径获取 HttpClient。如果是这种情况,那么类路径上 JAR 的顺序是不相关的。

如果这是“真正的 Java(tm)”,您可以在启动 JVM 时使用替代引导类路径来解决此问题,但我认为您不能在 Android 应用程序1中这样做。

我能建议的最好方法是获取 HttpClient 及其依赖项的源代码,在整个过程中调整包名称,并构建新的 JAR。然后通过使用调整后的包名称导入来修改您的应用程序代码以使用新类。


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

于 2013-05-19T05:51:56.760 回答
1

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

于 2013-05-19T07:54:59.230 回答