I am developing an Android app and using a library that in turn depends on RESTEasyClient
. When using the library at runtime, I get a NoSuchMethodError
:
java.lang.NoSuchMethodError: No direct method <init>(Ljavax/net/ssl/SSLContext;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V in class Lorg/apache/http/conn/ssl/SSLSocketFactory; or its super classes (declaration of 'org.apache.http.conn.ssl.SSLSocketFactory' appears in /system/framework/ext.jar)
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.initDefaultEngine(ResteasyClientBuilder.java:418)
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:333)
As I understand it, this is because of an incompatibility with Android's implementation of Apache HttpClient. Searching online, I have found various solutions revolving around including org.apache.httpconnections:httpclient
in the gradle dependencies and adding compile.exclude module: httpclient
(to resolve the resulting conflict) in several variations. I have tried all these and invariably run into either an error from gradle or the NoSuchMethodError
mentioned above.
Is it possible to successfully use RESTEasyClient
on Android? What steps do I need to take to enable this?
It all comes down to versions. The android version is a bit behind, and has not the same method signatures in the api. Apaches recommendation is to add a specific version 4.3+ in the build file.
http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With