我正在测试Android M开发者预览版中的Volley< HurlStack。
将compileSdkVersion
从22
更改为'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'
的步骤时,它仍然无法正常工作。
答案 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) {}