12

我正在 Android M Developer Preview 中测试 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 客户端相关的更改,但是当我按照步骤添加useLibrary 'org.apache.http.legacy'gradle 时它仍然无法正常工作。

参考:HurlStack.java AOSP

行为更改:Apache HTTP 客户端删除

4

4 回答 4

4

官方的“行为变更”文档指出,Apache HTTP 客户端在 Android M 中已被移除——不是被弃用,而是被移除。就我个人而言,我强烈建议切换到从 KitKat 开始实际上用作引擎的OkHttpHttpURLConnection,通过使用依赖项,您可以直接从 Square 团队获得所有新鲜的好东西。

于 2015-08-04T21:27:28.897 回答
1

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

在 proguard 配置中添加这些:-dontwarn org.apache.http.** -dontwarn com.android.volley.toolbox.**

于 2015-10-04T09:37:16.773 回答
0

除了使用 okHttp 之外,后备方案是使用 Google 建议的旧版 apache httpclient。请在此处查看我的答案以使其正常工作。

如何在 Android Marshmallow 上使用旧版 Apache HTTP 客户端?

于 2015-08-05T06:49:11.510 回答
0

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

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

那么一个简单的解决方法就是使用 HttpURLConnection 类中的常量版本:

if (error.networkResponse.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {}
于 2015-11-20T17:00:52.397 回答