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

Я тестирую HurlStack от Volley в 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' шаги, чтобы добавить useLibrary 'org.apache.http.legacy' в gradle.

Ссылка: HurlStack.java AOSP

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

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

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

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

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

Помимо использования okHttp, резервное копирование заключается в использовании устаревшего apache httpclient, как это предлагает Google. См. Мой ответ здесь, чтобы заставить его работать.

Как использовать устаревший HTTP-клиент Apache на Android Marshmallow?

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

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

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

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