Apache HttpClient Android (Gradle)
Posted
技术标签:
【中文标题】Apache HttpClient Android (Gradle)【英文标题】: 【发布时间】:2014-09-24 19:26:57 【问题描述】:我已将此行添加到我的 build.gradle
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5'
我想在我的代码中使用 MultipartEntityBuilder。但是 Android Studio 不会将库添加到我的代码中。 谁能帮我解决这个问题?
【问题讨论】:
该行是否在***dependencies
闭包中?您是否在*** repositories
闭包中配置了 mavenCentral()
?
@CommonsWare 我是新手,你能解释一下吗?***闭包是什么意思?以及如何检查那里是否配置了 mavencentral
鉴于您在 cmets 中报告的以下一个答案的错误,您已经设置了这些部分。
@CommonsWare 为什么不jcenter()
?它有更多的工件,更好的搜索,Gradle 的复制粘贴 sn-ps,这就是 Android Studio 推荐的。
@CommonsWare 您在 Maven Central 上找到的所有内容也都在 JCenter 中,因此您可以放心使用。但 Gradle 和 Android Studio 都比 Maven Central 更多 jcenter()
。切换Gradle还有一个悬而未决的问题,请在jcenter中查看。
【参考方案1】:
如果您使用目标 SDK 作为 23,请在 build.gradle 中添加以下代码
android
useLibrary 'org.apache.http.legacy'
附加说明:不要尝试使用这些文件的 gradle 版本。他们坏了(28.08.15)。我尝试了 5 个多小时才让它工作。它只是没有。 不工作:
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
另一件事 不要使用:
'org.apache.httpcomponents:httpclient-android:4.3.5.1'
指的是 21 个 API 级别。
【讨论】:
不只是目标 SDK,如果你使用 compile SDK 23 也会发生这种情况,proguard 仍然会抛出错误 添加这三个jar后,我的项目已经有了google play服务,fbook sdk,appcompat_v7,所以我得到了65K方法的错误,你能建议以上库的proguard吗? @Chitrang 你也可以让你的应用程序多索引;):) @Chitrang use android useLibrary 'org.apache.http.legacy' 将此添加到您的 build.gradle 文件中删除上面的编译文件依赖项 只需添加“android useLibrary 'org.apache.http.legacy' ”即可解决我的问题。谢谢!【参考方案2】:接受的答案对我来说似乎不太正确。当可以依赖同一版本的 HttpMime 时,拖动不同版本的 HttpMime 是没有意义的。
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5'
compile (group: 'org.apache.httpcomponents' , name: 'httpmime' , version: '4.3.5')
exclude module: 'org.apache.httpcomponents:httpclient'
【讨论】:
我最终下载了 jar 文件,因为我无法从 gradle 获得正确的版本 这就是我告诉你的,你不接受我的回答 使用 API 级别 23 这不能很好地工作。实际上,Jinu 下面的答案对我有用。在 android 部分添加useLibrary 'org.apache.http.legacy'
解决了我的情况。【参考方案3】:
尝试将此添加到您的依赖项中:
compile 'org.apache.httpcomponents:httpclient:4.4-alpha1'
通常如果你想使用一个库并且你正在搜索 Gradle 依赖行,你可以使用Gradle Please
编辑:也检查this 一个。
【讨论】:
我得到这个错误:依赖打包来定义主要工件的扩展已被弃用,并计划在 Gradle 2.0 中删除警告:依赖 org.apache.httpcomponents:httpclient:4.4-alpha1调试时忽略它,因为它可能与 Android 提供的内部版本冲突。如有问题,请用jarjar重新打包更改类包 那如果已经包含在Android系统中就没有理由添加了! 但我无法导入库 它说无法解析符号'MultipartEntityBuilder'并且不建议任何导入。 @HiradRoshandel:希望在某个地方有更多说明,来自httpclient-android
工件的维护者,解释如何在 Android Studio/Gradle for Android 项目中正确使用该工件。【参考方案4】:
其他人都没有为我工作。我必须添加以下依赖项,如 here
所述compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1'
因为我的目标是 API 23。
【讨论】:
这真的是最好的选择,看到它这么低很难过。我描述了为什么遗留 jar 更好,以及这里的任何内容:***.com/a/37623038/1727132 同样的情况,我也必须这样做【参考方案5】:我通过将以下内容添加到我的 build.gradle 文件解决了问题
android
useLibrary 'org.apache.http.legacy'
但是,这仅在您使用 gradle 1.3.0-beta2 或更高版本时才有效,因此如果您使用的是较低版本,则必须将其添加到 buildscript 依赖项中:
classpath 'com.android.tools.build:gradle:1.3.0-beta2'
【讨论】:
Could not find method android() for arguments
.【参考方案6】:
我一遍又一遍地搜索这个解决方案就像一个魅力::
apply plugin: 'com.android.application'
android
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig
applicationId "com.anzma.memories"
useLibrary 'org.apache.http.legacy'
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
packagingOptions
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('org.apache.httpcomponents:httpmime:4.3.6')
exclude module: 'httpclient'
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
【讨论】:
为了将来参考,请将答案的文本部分与代码分开,以提高答案的可读性和质量。【参考方案7】:我不知道为什么,但(目前)httpclient 可以仅作为 jar 编译到项目的 libs 目录中。 HttpCore 在像这样从 mvn 中包含时可以正常工作:
dependencies
compile 'org.apache.httpcomponents:httpcore:4.4.3'
【讨论】:
【参考方案8】:工作 gradle 依赖
试试这个:
编译'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
【讨论】:
以上是关于Apache HttpClient Android (Gradle)的主要内容,如果未能解决你的问题,请参考以下文章
Apache HttpClient Android (Gradle)
Android 项目使用 httpclient --> http.client (apache), post/get 方法
在 Android SDK 23 中使用 Apache HttpClient。NoSuchMethod
Android SDK ~ Cloud Vision:警告:org.apache.httpcomponents:httpclient:4.0.1