Волейбол в предпросмотре разработчика Android M: org.apache.http не может быть разрешен

Я тестирую Volley HurlStack в Android M Developer Preview.

После изменения 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;

Как я могу изменить свой код для решения этой проблемы?

Я знаю, что есть некоторые изменения, связанные с HTTP-клиентом Apache, но он по-прежнему не работает, когда я выполняю шаги, чтобы добавить useLibrary 'org.apache.http.legacy' в gradle.

Ссылка: HurlStack.java AOSP

Изменения поведения: удаление HTTP-клиента Apache

Ответ 1

В официальном документе "Изменения поведения" говорится, что HTTP-клиент Apache удален в Android M - не устарел, но удален. Лично я настоятельно рекомендую перейти на OkHttp, который фактически используется как движок HttpURLConnection с момента установки KitKat, используя зависимость, которую вы получаете все свежие свойства от команды Square напрямую.

Ответ 2

Вы можете игнорировать эти предупреждения, потому что Volley по-прежнему компилируется с использованием API 22: https://github.com/mcxiaoke/android-volley/blob/master/gradle.properties

добавьте их в конфигурацию proguard: -dontwarn org.apache.http. ** -dontwarn com.android.volley.toolbox. **

Ответ 4

Если, как и я, единственная причина, по которой вы включали HttpClient, - это то, что вы тестировали коды ответов HTTP:

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

тогда простое исправление - это просто использовать версию констант, которые находятся в классе HttpURLConnection:

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