Android M开发人员预览中的Volley:org.apache.http无法解析

时间:2015-07-10 21:48:25

标签: android android-volley android-mnc

我正在测试Android M开发者预览版中的Volley< HurlStack。

compileSdkVersion22更改为'android-MNC'后,org.apache.http中的所有类都未编译:

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ProtocolVersion;
import org.apache.http.StatusLine;
import org.apache.http.entity.BasicHttpEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicHttpResponse;
import org.apache.http.message.BasicStatusLine;

如何修改代码以解决此问题?

我知道有一些与Apache HTTP客户端相关的更改,但是当我按照在gradle中添加useLibrary 'org.apache.http.legacy'的步骤时,它仍然无法正常工作。

参考:HurlStack.java AOSP

Behavior Changes: Apache HTTP Client Removal

4 个答案:

答案 0 :(得分:4)

在Android M中删除Apache HTTP客户端的官方“行为更改”文档states - 未弃用,但已删除。我个人强烈建议切换到OkHttp实际上自KitKat以来用作HttpURLConnection引擎,通过使用依赖,你可以直接从Square团队获得所有新鲜的好东西。

答案 1 :(得分:1)

你可以忽略这些警告,因为Volley仍然使用API​​ 22编译: https://github.com/mcxiaoke/android-volley/blob/master/gradle.properties

在proguard配置中添加以下内容: -dontwarn org.apache.http。** -dontwarn com.android.volley.toolbox。**

答案 2 :(得分:0)

除了使用okHttp之外,后备还是使用Google建议的传统apache httpclient。 请在此处查看我的回答以使其正常运行。

How to use the legacy Apache HTTP client on Android Marshmallow?

答案 3 :(得分:0)

如果像我一样,你包括HttpClient的唯一原因是你正在测试HTTP响应代码:

if (error.networkResponse.statusCode == HttpStatus.SC_UNAUTHORIZED) {}

然后一个简单的修复只是使用HttpURLConnection类中的常量版本:

if (error.networkResponse.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {}