Sml*_*Sml 14 java android apache-httpclient-4.x
我正在使用android studio API22,我有这些错误:
'org.apache.http.HttpEntity' is deprecated
'org.apache.http.HttpResponse' is deprecated
'org.apache.http.NameValuePair' is deprecated
'org.apache.http.client.HttpClient' is deprecated
'org.apache.http.client.entity.UrlEncodedFormEntity' is deprecated
'org.apache.http.client.methods.HttpPost' is deprecated
'org.apache.http.impl.client.DefaultHttpClient' is deprecated
'org.apache.http.message.BasicNameValuePair' is deprecated
'org.apache.http.params.BasicHttpParams' is deprecated
'org.apache.http.params.HttpConnectionParams' is deprecated
'org.apache.http.params.HttpParams' is deprecated
'org.apache.http.util.EntityUtils' is deprecated
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
小智 20
将此添加到您的gradle
useLibrary 'org.apache.http.legacy'
Run Code Online (Sandbox Code Playgroud)
例
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'
}
Run Code Online (Sandbox Code Playgroud)
引用自己:
如果您需要继续使用HttpClient API,请考虑切换到OkHttp及其HttpClient兼容层,或考虑切换到Apache独立的Android版HttpClient.否则,切换到HttpURLConnection或OkHttp的本机API.
或者,根据您使用HttpClient的内容,使用更具体的网络库(Web服务的Retrofit,图像的Picasso或Universal Image Loader等).
另请注意,HttpClient已从用于M Developer Preview的SDK中删除,表明它将在下一版Android中删除.虽然有一种解决方法可以继续在M中使用HttpClient,但您确实需要转移到其他方面.
Android现有的Apache HTTP客户端版本非常老旧.
谷歌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 针对Android的新Apache HttpClient软件包(如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,或者如果不能满足您的需求,您可以使用库OkHttp,这HttpUrlConnection是内部基于此的库.
| 归档时间: |
|
| 查看次数: |
53139 次 |
| 最近记录: |