我正在使用android studio API22,我有这些错误:
jumedge[0]
我该如何解决这个问题?
答案 0 :(得分:18)
将此添加到您的gradle
useLibrary 'org.apache.http.legacy'
实施例
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
debuggable false
signingConfig signingConfigs.releaseConfig
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debugSigned {
debuggable true
signingConfig signingConfigs.releaseConfig
}
debug {
debuggable true
}
}
useLibrary 'org.apache.http.legacy'
}
答案 1 :(得分:7)
引用myself:
如果您需要继续使用HttpClient API,请考虑切换到OkHttp及其HttpClient兼容层,或考虑切换到Apache’s separate Android edition of HttpClient。否则,切换到HttpURLConnection或OkHttp的本机API。
或者,根据您使用HttpClient的内容,使用更具体的网络库(用于Web服务的Retrofit,用于图像的Picasso或Universal Image Loader等)。
另请注意,HttpClient已从用于M Developer Preview的SDK中删除,表明它将在下一版Android中删除。虽然有a workaround to continue using HttpClient in M,但你真的需要转向别的东西。
答案 2 :(得分:5)
Android上提供的Apache HTTP客户端版本为very very old。
谷歌Android 1.0发布时带有Apache HttpClient的BETA前快照。为了配合第一个Android版本,Apache HttpClient 4.0 API必须过早冻结,而许多接口和内部结构仍未完全解决。随着Apache HttpClient 4.0的日趋成熟,该项目期待Google将最新的代码改进整合到他们的代码树中。不幸的是,它没有发生。
如果您不想切换到新的API,可以手动将更新版本的Apache HttpClient库添加到项目中,以替换Android SDK中旧的弃用版本< 22.
在定位SDK 23+时,最简单的方法是使用Marek Sebera的新Apache HttpClient package for Android(作为suggested by Apache),这可能会成为替代品。只需将以下依赖项添加到build.gradle文件中(如果适用,更新版本号):
compile "cz.msebera.android:httpclient:4.4.1.1"
并在项目的任何位置用import org.apache.http.*
替换import cz.msebera.android.httpclient.*
。
请注意,旧库中的许多类已被弃用(例如HttpParams
,ThreadSafeClientConnManager
),因此重写代码可能是更好的解决方案。
编辑我发现在我们更新到新的Http客户端之后,当代理服务器落后于用户时会出现超时异常的情况。由于代码在各处都充满了弃用的警告,我们认为尝试解决问题并不值得。在尝试将其投入生产之前,我建议进行非常彻底的测试。
正如其他答案中所提到的,一个更好的解决方案是咬紧牙关并切换到原生Android HttpUrlConnection
,或者如果它不能满足您的需求,您可以使用库{ {1}},OkHttp
是internally based upon anyway。
答案 3 :(得分:3)
HttpClient取决于android lollypop 5.1(API 22): -
但是我们仍然可以在Android studio中使用以下代码来使用HttpClient: -
转到app \ build.gradle文件:
defaultConfig {
applicationId "com.XXXXX.XXX"
minSdkVersion 16
targetSdkVersion 23
-----------
-----------
useLibrary 'org.apache.http.legacy'
}
[或替代]
下载并添加HttpClient jar个文件到您的项目或使用okHttp。
答案 4 :(得分:1)
在Gradle中使用以下依赖关系
dependencies {
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
答案 5 :(得分:0)
从here下载org.apache.http.legacy
jar文件。
在build.gradle
文件中,输入以下代码
defaultConfig {
useLibrary 'org.apache.http.legacy'
}
将下载的.jar文件保存在以下位置
./sdk/platforms/android-23/optional/(.jar file)
我在平台下使用android-23,它取决于你使用的是哪个API级别。如果可选文件夹不存在,请创建可选文件夹并在同步gradle项目之前将.jar文件粘贴到其中。
答案 6 :(得分:0)
将此添加到您的gradle
useLibrary 'org.apache.http.legacy'
实施例
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
debuggable false
signingConfig signingConfigs.releaseConfig
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debugSigned {
debuggable true
signingConfig signingConfigs.releaseConfig
}
debug {
debuggable true
}
}
useLibrary 'org.apache.http.legacy'
}
这个库可以让你毫无问题地使用它,至少到目前为止我还没有遇到任何问题。