Android-多协议性和依赖性
我最近将我的项目从Eclipse迁移到Android Studio(我还没有完全控制这个IDE)。在这个项目中,我有一个文件上传程序AsyncTask,它通过http发送多部分。为此,我使用org.apache.httpcomponents。我创建了以下依赖项:Android-多协议性和依赖性,android,android-studio,androidhttpclient,Android,Android Studio,Androidhttpclient,我最近将我的项目从Eclipse迁移到Android Studio(我还没有完全控制这个IDE)。在这个项目中,我有一个文件上传程序AsyncTask,它通过http发送多部分。为此,我使用org.apache.httpcomponents。我创建了以下依赖项: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'org.apache.httpcomponents:httpcore:4
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'org.apache.httpcomponents:httpcore:4.4'
compile 'org.apache.httpcomponents:httpmime:4.4'
...
}
在我的java异步任务代码中:
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody(...);
builder.addBinaryBody(...);
builder.addBinaryBody(...);
HttpEntity entity = builder.build(); // < throw exception
MultipartEntityBuilder=MultipartEntityBuilder.create();
builder.addBinaryBody(…);
builder.addBinaryBody(…);
builder.addBinaryBody(…);
HttpEntity entity=builder.build();//<抛出异常
我在启动上载时获得的异常:
Caused by: java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE
at org.apache.http.entity.ContentType.toString(ContentType.java:153)
at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:52)
at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:226)
at org.apache.http.entity.mime.MultipartEntityBuilder.build(MultipartEntityBuilder.java:230)
原因:java.lang.NoSuchFieldError:org.apache.http.message.BasicHeaderValueFormatter.INSTANCE
位于org.apache.http.entity.ContentType.toString(ContentType.java:153)
位于org.apache.http.entity.mime.MultipartFormEntity.(MultipartFormEntity.java:52)
位于org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:226)
位于org.apache.http.entity.mime.MultipartEntityBuilder.build(MultipartEntityBuilder.java:230)
我认为
android.jar>httpcomponents
和org.apache.httpcomponents
依赖项之间存在冲突,但我没有找到解决问题的方法。我也遇到了同样的问题-尝试使用http android客户端(这也依赖于httmime
但需要4.3)。这对我很有用:
dependencies {
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
compile('org.apache.httpcomponents:httpmime:4.3') {
exclude module: "httpclient"
}
}
Android Studio解决方案 右键单击左侧的应用程序折叠器->打开模块设置->依赖项->单击“+”->1。图书馆依赖 现在将出现“选择文件依赖项”框-提供输入“httpmime:4.4”,然后单击搜索按钮 它将显示dependencie文件。选择该文件并单击“确定”
等等。。。它将添加jar,Gradle脚本将自动更新。@soey谢谢你的回答,它救了我。工作完全正常。
dependencies {
compile('org.apache.httpcomponents:httpmime:4.3') {
exclude module: "httpclient"
}
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
compile('org.apache.httpcomponents:httpmime:4.3') {
// httpmime:4.2.1' also worked
exclude module: "httpclient"
}