Залп в Android M предварительного просмотра: org.apache.http не может быть решена
Я тестирую Volley's 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'
в градле.
Ссылка: HurlStack.java AOSP
4 ответа
В официальном документе "Изменения поведения" говорится, что HTTP-клиент Apache удален в Android M - не устарел, но удален. Лично я настоятельно рекомендую перейти на OkHttp, который на самом деле используется в качестве HttpURLConnection
Начиная с KitKat, используя зависимость, вы получаете все свежие полезности от команды Square напрямую.
Вы можете игнорировать эти предупреждения, потому что Volley все еще компилируется с использованием API 22: https://github.com/mcxiaoke/android-volley/blob/master/gradle.properties
добавьте их в конфигурацию Proguard: -dontwarn org.apache.http.** -dontwarn com.android.volley.toolbox.**
Если, как и я, единственная причина, по которой вы включили HttpClient, заключается в том, что вы тестировали коды ответов HTTP:
if (error.networkResponse.statusCode == HttpStatus.SC_UNAUTHORIZED) {}
тогда простое исправление состоит в том, чтобы просто использовать версию констант в классе HttpURLConnection:
if (error.networkResponse.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {}
Помимо использования okHttp, запасным вариантом является использование устаревшего apache httpclient, как это было предложено Google. Смотрите мой ответ здесь, чтобы заставить его работать.
Как использовать устаревший HTTP-клиент Apache на Android Marshmallow?