【发布时间】:2019-02-12 14:28:57
【问题描述】:
我正在尝试了解 Android 当前与 Apache http-client 的关系。我需要使用依赖于org.apache.httpcomponents:httpclient:4.5.2 的标准Java 库,这在Android 上似乎是不可能的。
我们可以在 Android M 中看到,support was removed 用于 httpclient。在 Android P 中,库 was removed from the boot class path 对没有清单条目的应用程序不可用。我还可以看到有一个官方的 Apache Android port of httpclient 如果您需要一个稍微更现代的库版本,它是 4.3.5.1 的合适直接替代品。甚至还有一个 third party port of 4.4.1.1 用于具有现代目标 sdk 的应用程序。
我的应用程序的最小 sdk 是 17,目标 sdk 是 28。所以我的第一个问题是,实际上是否有可能在最小 sdk 停留在 17 的情况下终止对 Android 版本 apache httpclient 的任何引用,如果不是如何我可以用库中的 4.5.2 替换那个版本吗?
我的具体错误是 java.lang.NoSuchFieldError: org.apache.http.conn.ssl.AllowAllHostnameVerifier.INSTANCE,即使我的目标 SDK 为 28,Android 仍在查找和使用没有 INSTANCE 字段的旧版 AllowAllHostnameVerifier.java 类:
【问题讨论】:
-
谢谢@mridul,但旧的http客户端与我需要的相反:)
-
@DanielWilson 你是否尝试在清单应用程序标签中使用它:
-
谢谢,但是从这个和之前的评论来看,我可能不太清楚,旧版本的 apache http 客户端不好,它不包含这个新的一些变量和调用我的应用需要使用的库。
-
jst把Apache http-client 4.5.x的源码放到你的项目中怎么样。同名的本地资源优先级更高。丑陋,不推荐,可能很危险,但应该可以。
标签: java android apache-httpclient-4.x