Java 在Android Studio中使用unirest的问题

Java 在Android Studio中使用unirest的问题,java,android,unirest,Java,Android,Unirest,我的logcat中出现了一些错误,这些错误使我的应用程序在尝试执行一些unirest请求时崩溃。我知道您必须生成一个包含所有依赖项的特殊unirest jar,但我在maven中遇到了问题,没有这样做,而是将依赖项单独包含在libs文件夹中。我已经把问题缩小到下面这一个错误 日志: java.lang.VerifyError: com/mashape/unirest/http/options/Options at com.mashape.unirest.http.HttpClie

我的logcat中出现了一些错误,这些错误使我的应用程序在尝试执行一些unirest请求时崩溃。我知道您必须生成一个包含所有依赖项的特殊unirest jar,但我在maven中遇到了问题,没有这样做,而是将依赖项单独包含在libs文件夹中。我已经把问题缩小到下面这一个错误

日志:

java.lang.VerifyError: com/mashape/unirest/http/options/Options
        at com.mashape.unirest.http.HttpClientHelper.prepareRequest(HttpClientHelper.java:154)
        at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:131)
        at com.mashape.unirest.request.BaseRequest.asJson(BaseRequest.java:68)
我知道java.lang.verifyerror是由编译时和运行时给出的不同库引起的。但我不知道如何解决这个问题。请帮助,确保我需要的所有依赖项都在下面,因为在此之前我没有使用过unirest

构建。Gradle:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/unirest-java-1.3.20.jar')
compile files('libs/rebound-0.3.6.jar')
compile files('libs/commons-io-2.4.jar')
compile files('libs/json-20140107.jar')
compile files('libs/httpmime-4.3.5.jar')
compile files('libs/httpclient-4.3.5.jar')
compile files('libs/httpasyncclient-4.0.2.jar')
compile files('libs/httpcore-4.3.2.jar')
compile files('libs/commons-codec-1.6.jar')
compile files('libs/commons-logging-1.1.3.jar')
}
我的libs文件夹的外观:

commons-io-2.4.jar
httpcore-4.3.2.jar
httpclient-4.3.5.jar
commons-logging-1.1.3.jar
json-20140107.jar
rebound-0.3.6.jar
unirest-java-1.3.20.jar
commons-codec-1.6.jar
httpmime-4.3.5.jar
httpasyncclient-4.0.2.jar
在build.gradle中还包括此项,因为我在尝试生成gradle文件时遇到了重复的文件错误:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}

我知道你问那个问题已经有一段时间了。我认为Android覆盖了org.apache.http中的常见类。您不能自己覆盖它们。尝试将下载的包重新定位到另一个位置,例如subrogate.org.apache.http,以便正确使用它们

发件人:

谷歌安卓1.0发布时附带了ApacheHttpClient的测试前快照。为了配合第一个Android版本,ApacheHttpClient 4.0API不得不提前冻结,而许多接口和内部结构仍然没有完全解决。随着ApacheHttpClient 4.0的成熟,该项目希望Google将最新的代码改进纳入他们的代码树中。不幸的是,它没有发生。Android附带的ApacheHttpClient版本实际上已经成为一个分支。最终,谷歌决定停止fork的进一步开发,同时拒绝升级到apachehttpclient的股票版本,理由是出于兼容性考虑。因此,那些希望继续在Android上使用ApacheHttpClient API的Android开发人员无法利用更新的功能、性能改进和错误修复

如果您继续阅读,您将发现以下内容:

一些实现类必须使用不同的名称进行复制(或着色),以避免与Android运行时中包含的相同类的旧版本发生冲突。可以通过避免使用“org.apache.http.*.**HC4”类来提高与HttpClient的股票版本的兼容性

使用

包括http组件

如果不想手动重新定位依赖项,则可能必须使用插件重新定位依赖项

编辑: 我找到了很棒的教程,对我来说很有用。我甚至建议使用AndroidSync或Volley建立到Web服务器的连接

dependencies {
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}