[英]org.apache.http packages removed in API level 23. What is the alternative?
在更新到最新的android API级别23(Marshmallow)之后,通过build.gradle添加以下更改后,所有org.apache.http类都无效。
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.myapp.package"
minSdkVersion 15
targetSdkVersion 23
versionCode 2
versionName "1.1"
}
}
我在这里查看了“Android API差异报告”。 它说所有的org.apache.http类都被删除了。 有人可以建议什么是替代方案吗?
这是我的代码:
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(address);
httpPost.setEntity(new StringEntity("{\"longUrl\":\""+longUrl+"\"}"));
httpPost.setHeader("Content-Type", "application/json");
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
请参阅Android开发者的行为更改 ,其中包含以下内容:
Android 6.0版本删除了对Apache HTTP客户端的支持。 如果您的应用使用此客户端并定位到Android 2.3(API级别9)或更高版本,请改用HttpURLConnection类。 此API更高效,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗。 要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时依赖项:
android { useLibrary 'org.apache.http.legacy' }
请参考这个 。 Android Developer网站中提到了替代class
。
Android 5.1中已弃用org.apache.http类和android.net.http.AndroidHttpClient类。 这些类不再被维护,您应该尽快使用这些API将任何应用程序代码迁移到URLConnection类。
您可以手动添加Apache HttpClient的最新版本:
implementation 'org.apache.httpcomponents:httpclient:4.5.5'
同样,您可以像OkHttp一样使用另一个HTTP库。 您还可以使用更高级别的库,例如Retrofit。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.