web-dev-qa-db-ja.com

タイプMultipartEntityは非推奨です

ドキュメントには org.Apache.http.entity.mime.MultipartEntity クラスは非推奨です。誰かが私に代替案を提案してもらえますか?

私はこれを私のコードで次のように使用しています:

entity.addPart("params", new StringBody("{\"auth\":{\"key\":\""
            + authKey + "\"},\"template_id\":\"" + templateId + "\"}"));
entity.addPart("my_file", new FileBody(image));
httppost.setEntity(entity);
42
Syam S

ドキュメントを注意深く読むと、代わりに MultipartEntityBuilder を使用する必要があることに気付くでしょう。

例えば:

_MultipartEntityBuilder builder = MultipartEntityBuilder.create();        

/* example for setting a HttpMultipartMode */
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

/* example for adding an image part */
FileBody fileBody = new FileBody(new File(image)); //image should be a String
builder.addPart("my_file", fileBody); 
//and so on
_

FileBody クラスにはいくつかのコンストラクターがあり、これによりmimeTypeコンテンツタイプなど.

ビルド指示をビルダーに渡して完了したら、ビルドされた HttpEntity を取得できます。 MultipartEntityBuilder#build() メソッドの呼び出し:

_HttpEntity entity = builder.build();
_
109

非推奨のAPIを使用しているチュートリアルがまだたくさんあるので、この記事にたどり着きました。将来の訪問者のために(このAPIが非推奨になるまで;))

File image = "...."; 
FileBody fileBody = new FileBody(image);
MultipartEntityBuilder builder = MultipartEntityBuilder.create()
                         .setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
                         .addTextBody("params", "{....}")
                         .addPart("my_file", fileBody);
HttpEntity multiPartEntity = builder.build();

String url = "....";
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(multiPartEntity);
...
3
Neo