在Android上使用RESTEasyClient时出现NoSuchMethodError

O.O*_*nce 16 java android nosuchmethoderror resteasy

我正在开发一个Android应用程序并使用依赖于它的库RESTEasyClient.在运行时使用库时,我得到一个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)
Run Code Online (Sandbox Code Playgroud)

据我了解,这是因为与Android的Apache HttpClient实现不兼容.在线搜索,我发现了各种解决方案,包括org.apache.httpconnections:httpclient在gradle依赖项中,并compile.exclude module: httpclient在几个变体中添加(以解决由此产生的冲突).我已经尝试了所有这些并且总是遇到gradle或NoSuchMethodError上面提到的错误.

是否可以RESTEasyClient在Android 上成功使用?我需要采取哪些步骤才能启用此功能?

Ali*_*mir 1

这一切都取决于版本。android版本有点落后,并且api中没有相同的方法签名。Apache 的建议是在构建文件中添加特定版本 4.3+。

http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html