Caused by: java.lang.NoClassDefFoundError: org.apache.http.util.Args

Caused by: java.lang.NoClassDefFoundError: org.apache.http.util.Args

  conn.addRequestProperty(entity.getContentType().getName(), entity.getContentType().getValue());

它在三星设备 运行 操作系统版本 4.1 上崩溃。在 Marshmallow Nexus 6 设备上,它工作得很好。有什么问题?

Gradle 文件

compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'

我的库文件夹中有 httpclient-4.3。3.jar httpclient-cache-4.3.3.jar httpcore-4.3.2.jar httpmime-4.3.3.jar

自 marshmallow 以来,Apache http 客户端已被删除。

看这里Apache HTTP Client Removal

解决方案(完全关于嵌入客户端):

android {
    useLibrary 'org.apache.http.legacy'
}

更新: 关于特定问题,请参阅相关

顺便说一句,在我的项目中我无法将 apache http 客户端添加为库,因为包名称与嵌入客户端冲突。我必须使用 this or as described

删除 Marshmallow Apache HTTP 客户端

android {
useLibrary 'org.apache.http.legacy'

}

试一次

app/build/libs Files >> Project Structure >> Dependencies >> + >> File Dependencies >> 然后将其更改为 provided 而不是 compile(编译将导致 java 以非零值退出1 如果你导入了太多的罐子。

三星已经定制了 sdk,所以有机会包含更多的 jar..

请像这样包含 useLibrary url

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'