在Android SDK中使用Apache HttpClient 23. NoSuchMethod

voj3qocg  于 2024-01-04  发布在  Android
关注(0)|答案(2)|浏览(175)

已经在Google上为此创建了一个bugticket。可能有人有什么想法吗?
我想在Apache库中使用普通的HTTPClient(ClosableHttpClient),

  1. mCloseableHttpClient = HttpClientBuilder.create()
  2. .setDefaultRequestConfig(defaultRequestConfig)
  3. .setUserAgent(userAgent)
  4. .build();

字符串
应用程序总是直接崩溃:

  1. 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)
  2. at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
  3. at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:912)

API级别22开始(API级别23相同**)。

问题是:Android SDK中的类没有声明 * BASYANCE字段。

5fjcxozz

5fjcxozz1#

以下类已从API级别22起删除

  1. org.apache.http.conn.ssl.AllowAllHostnameVerifier

字符串
您可以在官方的api changes中看到删除的类。
您可以使用HttpURLConnection类代替。
根据官方指南
此API效率更高,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗

  • 编辑 *

根据CommonsWare下面的评论,还有其他第三方选项,包括OkHttpApache's separate HttpClient library for Android

guykilcj

guykilcj2#

是一个库版本的问题,请尝试使用此版本

  1. implementation 'org.apache.httpcomponents:httpclient:4.5.3'
  2. api 'org.apache.httpcomponents:httpcore:4.4.6'
  3. api 'org.apache.httpcomponents:httpmime:4.3.6'

字符串

相关问题