作者:手机用户2502881923 | 来源:互联网 | 2023-05-22 12:56
我最近将我的项目从Eclipse迁移到Android Studio(我还没有完全控制这个IDE).在这个项目中,我有一个文件上传器AsyncTask,它通过http发送multipart.为此,我使用org.apache.httpcomponents.我创建了以下依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'org.apache.httpcomponents:httpcore:4.4'
compile 'org.apache.httpcomponents:httpmime:4.4'
...
}
在我的java AsyncTask代码中:
MultipartEntityBuilder builder = 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.(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)
我认为android.jar > httpcomponents
和org.apache.httpcomponents
依赖之间存在冲突但我没有找到解决问题的解决方案.
1> soey..:
我有同样的问题 - 尝试使用http-android-client(这也依赖于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"
}
}
2> Nirmal Dhara..:
Android Studio的解决方案
右键单击左侧的app foleder - >打开模块设置 - >依赖关系 - >单击'+' - > 1.库Dependencie
现在"选择文件依赖项"框将出现 - 提供输入'httpmime:4.4'并单击搜索按钮.
它将显示dependdencie文件.选择该文件并单击"确定".
等待...它将添加jar,Gradle脚本将自动更新.