build.gradle ファイルを使用してアプリケーションに httpmime を含めようとすると、すべて正常にコンパイルされます。代わりに、アプリケーションが実際に MultipartEntityBuilder クラスを使用しようとすると、問題があることを示す WARN レベルのメッセージがログに多数記録されます。
依存関係の私の build.gradle からの抜粋は次のとおりです。
compile('org.apache.httpcomponents:httpmime:4.+') { 除外モジュール: 「httpclient」 }
エラーは次のとおりです。
10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: Lorg/apache/http/entity/ContentType の静的フィールド 6967 (DEFAULT_BINARY) を解決できません。 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: Lorg/apache/http/entity/ContentType の静的フィールド 6967 (DEFAULT_BINARY) を解決できません。 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: Lorg/apache/http/entity/ContentType の静的フィールド 6967 (DEFAULT_BINARY) を解決できません。 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.377 2409-2426/com.company.app W/dalvikvm﹕ VFY: 静的メソッドを解決できません 19478: Lorg/apache/http/util/Args;.notNull (Ljava/lang/Object;Ljava /lang/String;)Ljava/lang/Object; 10-09 13:39:37.377 2409-2426/com.company.app W/dalvikvm﹕ VFY: Lorg/apache/http/entity/ContentType の静的フィールド 6968 (DEFAULT_TEXT) を解決できません。 10-09 13:39:37.377 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;) 10-09 13:39:37.377 2409-2426/com.company.app W/dalvikvm﹕ VFY: 署名で参照されているクラスが見つかりません (Lorg/apache/http/entity/ContentType;)
Java クラス:
android.util.Log をインポートします。 import java.io.IOException; java.io.InputStream をインポートします。 java.io.OutputStream をインポートします。 java.net.HttpURLConnection をインポートします。 java.net.URL をインポートします。 org.apache.http.HttpEntity をインポートします。 org.apache.http.entity.mime.MultipartEntityBuilder をインポートします。 公開クラス FileUploader { private final static String BOUNDARY = "__--__--__SERVETHEOVERMIND-__-_"; public void uploadFile(String targetUrl, MultipartEntityBuilder アップロード, UploadHandler after) { Log.v("FileUploader", "アップロード中 " + targetUrl); HttpURLConnection コン = null; OutputStream os = null; InputStream は = null; 試す { HttpEntity uploadEntity = upload.build(); URL postTo = 新しい URL(targetUrl); con = (HttpURLConnection) postTo.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + BOUNDARY); con.setDoOutput(真); con.setDoInput(真); con.setUseCaches(false); con.addRequestProperty("接続", "キープアライブ"); con.setRequestProperty("コンテンツの長さ", String.valueOf(uploadEntity.getContentLength())); os = con.getOutputStream(); uploadEntity.writeTo(os); os.close(); con.connect(); is = con.getInputStream(); after.consumeUploadResponse(は); con.disconnect(); } キャッチ (IOException e) { e.printStackTrace(); } if(con != null) { con.disconnect(); } if(os != null) { 試す { os.close(); } キャッチ (IOException e) { Log.v("アップローダー", "クローズド出力ストリーム"); } } if(is != null) { 試す { 近くにあります(); } キャッチ (IOException e) { Log.v("アップローダー", "クローズド入力ストリーム"); } } } パブリック インターフェイス UploadHandler { public void consumerUploadResponse(InputStream ストリーム); } }
[編集]回答に従って、正しい依存関係
compile('org.apache.httpcomponents:httpmime:4.+') { 除外モジュール: 「httpclient」 } compile('org.apache.httpcomponents:httpcore:4.+') { 除外モジュール: 「httpclient」 }
[2 番目の編集] まだ問題があります - 現在はこれらの他の欠落ビットですが、バックエンドの問題である可能性があります。
10-10 11:51:54.998 29597-29638/com.company.app W/dalvikvm﹕ VFY: Lorg/apache/http/message/BasicHeaderValueParser の静的フィールド 7465 (インスタンス) を解決できません。 10-10 11:51:54.998 29597-29638/com.company.app W/dalvikvm﹕ VFY: Lorg/apache/http/message/BasicHeaderValueFormatter の静的フィールド 7459 (インスタンス) を解決できません。
[まだ別の編集]
この場合、最後の小さな欠落ビットは、MultipartEntityBuilder の正常な使用に影響を与えないようです。