私は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はAndroidに付属するBasicHeaderValueParserを使用しようとしているようで、そのクラスにはまだINSTANCEフィールドがありません。
関連するインポートは次のとおりです。
compile('org.Apache.httpcomponents:httpmime:4.3.6') {
exclude module: 'httpclient'
}
compile 'org.Apache.httpcomponents:httpcore:4.3.3'
残念ながら、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ファイルと屈折パス名をダウンロードします。それは私のために働く。
Httpmimeとhttpclient-Androidに互換性のないjarファイルを使用しているようです。 httpmimeのバージョン4.3.6を使用してみてください
Libフォルダーにバージョン4.3.6ファイルのhttpmime_4.3.6.jarを追加して追加するだけです
gradle(アプリレベル)の実装ファイル( 'lib/httpmime-4.3.6.jar')
簡単な解決策は以下を使用することです:
https://code.google.com/p/httpclientandroidlib/
これはAndroidの異なるパッケージ名でラップするためのAppache HttpClientポートです。Androidの既存のバージョンと干渉しないようにします。Androidプロジェクトでjarをインポートします「org.Apache.http」の代わりに「ch.boye.httpclientandroidlib」を使用します。