已经在Google上为此创建了bugticket。 可能有人有任何想法吗?
嘿伙计们,我想在Apache Library中使用普通的HTTPClient
(CloseableHttpClient),
mCloseableHttpClient = HttpClientBuilder.create()
.setDefaultRequestConfig(defaultRequestConfig)
.setUserAgent(userAgent)
.build();
并且应用程序总是直接崩溃:
java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/ext.jar)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:912)
API级别22 <(相同,API级别 23 )。
问题是:Android SDK 中的类没有声明 INSTANCE 字段。
答案 0 :(得分:1)
自API级别22以来,已删除以下类
org.apache.http.conn.ssl.AllowAllHostnameVerifier
您可以在官方api changes
中查看已删除的课程您可以改用HttpURLConnection课程。
此API更有效,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗
** 编辑 **
根据下面CommonsWare的评论,还有其他第三方选项,包括OkHttp或Apache's separate HttpClient library for Android
答案 1 :(得分:0)
是库版本的问题,请尝试使用此版本
implementation 'org.apache.httpcomponents:httpclient:4.5.3'
api 'org.apache.httpcomponents:httpcore:4.4.6'
api 'org.apache.httpcomponents:httpmime:4.3.6'