Получение NoSuchFieldError INSTANCE org/apache/http/message/BasicHeaderValueParser
Я работаю над приложением на Android. Я использую httpcore 4.3.3. Я получаю это, когда я пытаюсь использовать ContentType.parse(string)
java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueParser; in class Lorg/apache/http/message/BasicHeaderValueParser; or its superclasses (declaration of 'org.apache.http.message.BasicHeaderValueParser' appears in /system/framework/ext.jar)
Я немного погуглил и понимаю, почему получаю ошибку, но не уверен, как ее исправить. Из того, что я прочитал, кажется, что ContentType пытается использовать BasicHeaderValueParser, который поставляется с Android, и у этого класса еще нет поля INSTANCE. Любая помощь, пожалуйста?
Это соответствующий импорт:
compile('org.apache.httpcomponents:httpmime:4.3.6') {
exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpcore:4.3.3'
4 ответа
К сожалению, стоковые версии HttpCore нельзя использовать в Android. Пожалуйста, используйте Apache HttpClient Android Port, который также включает в себя необходимые классы HttpCore
compile('org.apache.httpcomponents:httpmime:4.3.6') {
exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
Загрузите последнюю версию файла Apache Httpclient Jar и переименуйте путь. Это подходит для меня.
Похоже, вы используете несовместимые jar для httpmime и httpclient-android. Попробуйте использовать версию 4.3.6 httpmime
Просто добавьте httpmime_4.3.6.jar файла версии 4.3.6 в папку lib и добавьте
файлы реализации ('lib/httpmime-4.3.6.jar') в gradle(уровень приложения)
Простое решение заключается в использовании:
https://code.google.com/p/httpclientandroidlib/
Это порт Appache HttpClient для android wrap с другим именем пакета, чтобы не мешать существующей версии в Android. Импортируйте jar-файл в проект Android и вместо "org.apache.http" используйте "ch.boye.httpclientandroidlib".
Примечание. Если вы одновременно используете apache httpmime и модификацию, используйте более старую версию apache httpmime.
(например: в моем случае я использовал это для загрузки изображения на сервер, а также для получения длины содержимого / размера изображения)
Это его более старая версия (не такая уж старая) или предыдущая версия, вы должны реализовать одну и ту же старую версию для обоих.
реализация 'com.squareup.retrofit2:retrofit:2.0.2' реализация 'org.apache.httpcomponents:httpmime:4.3.6'
Это новая версия модернизации. Вам следует использовать старую версию apache httpmime.
реализация 'com.squareup.retrofit2:retrofit:2.3.0' реализация 'org.apache.httpcomponents:httpmime:4.3.6'
Большое спасибо, если вам понравилось мое решение, пожалуйста, проголосуйте за меня.