Reputation: 5319
Already created a bugticket at Google for this. Possibly anyone has any ideas?
I wanted to use a normal HTTPClient
(CloseableHttpClient) within Apache Library,
mCloseableHttpClient = HttpClientBuilder.create()
.setDefaultRequestConfig(defaultRequestConfig)
.setUserAgent(userAgent)
.build();
and the Application always directly crashes with:
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)
starting at API Level 22 (same for API Level 23).
The problem is: The class within the Android SDK doesn't have INSTANCE field declared.
Upvotes: 3
Views: 17826
Reputation: 155
Is a problem of a library version try with this versions
implementation 'org.apache.httpcomponents:httpclient:4.5.3'
api 'org.apache.httpcomponents:httpcore:4.4.6'
api 'org.apache.httpcomponents:httpmime:4.3.6'
Upvotes: -1
Reputation: 4192
The following class has been removed as of API level 22
org.apache.http.conn.ssl.AllowAllHostnameVerifier
You can see the removed classes in the official api changes
You can use HttpURLConnection class instead.
According to official guide
This API is more efficient because it reduces network use through transparent compression and response caching, and minimizes power consumption
** EDIT **
According to CommonsWare's comment below, there are also other 3rd party options including OkHttp or Apache's separate HttpClient library for Android
Upvotes: 4