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 の正常な使用に影響を与えないようです。