我正在将一个应用程序升级到API 23,其中不推荐org.apache.http
。
我当前(不推荐的)代码如下所示:
HttpClient httpClient = new DefaultHttpClient();
File file = new File(attr.Value);
String url = server_url;
HttpPost request = new HttpPost(url);
FileEntity fileEntity = new FileEntity(file, "image/png");
request.setEntity(fileEntity);
HttpResponse response = httpClient.execute(request);
String output = getContent(response.getEntity().getContent());
我已经找到了一些关于如何使用HttpURLConnection
来完成这个任务的建议,但是它们都比当前的解决方案复杂得多(不能再使用了)。我正在讨论许多代码行,用于执行与上述功能相同的功能。
例如:此页和此页
有人有一个好的固体物较短的解决方案吗?
发布于 2015-10-05 14:31:13
如果您将compileSdkVersion
更改为21,您的应用程序将编译得很干净。尽管如此,谷歌放弃内置HttpClient实现是有原因的,所以你可能应该选择其他的库。该“其他图书馆”可以是:
HttpUrlConnection
,尽管如您所发现的,它的API留下了一些需要改进的地方。发布于 2015-10-05 13:26:56
ApacheGoogle4.3的HttpClient端口旨在通过提供与Google兼容的官方版本来纠正这种情况。 鉴于截至Android 23,谷歌的HttpClient分支已经被删除,这个项目已经停止。 建议那些想继续在Android上使用Apache HttpClient的用户考虑
针对Android 22及更高版本的ApacheAndroid4.3端口
dependencies {
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}
针对Android 23及更高版本时由Marek Sebera维护的Apache HttpClient包
dependencies {
compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1'
}
摘自Apache官方网站:Apache HttpClient for Android
注意:您不必使用useLibrary 'org.apache.http.legacy'
语句,这是为没有从HttpClient提供的HttpClient类迁移的项目引入的。对于进一步的解释。
发布于 2016-02-18 15:49:15
HTTPClient最好的替代方法是使用Volley。它更容易使用,处理请求队列和缓存您的请求。它完全兼容几乎所有的API级别,直到API 4。
关于如何做到这一点,请参阅Android文档。
https://stackoverflow.com/questions/32949626
复制相似问题