La documentation indique que org.Apache.http.entity.mime.MultipartEntity
la classe est obsolète. Quelqu'un pourrait-il me suggérer une alternative?
J'utilise ceci dans mon code comme ceci:
entity.addPart("params", new StringBody("{\"auth\":{\"key\":\""
+ authKey + "\"},\"template_id\":\"" + templateId + "\"}"));
entity.addPart("my_file", new FileBody(image));
httppost.setEntity(entity);
Si vous lisez attentivement les documents, vous remarquerez que vous devez utiliser MultipartEntityBuilder
comme alternative.
Par exemple:
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
Notez qu'il existe plusieurs constructeurs pour la classe FileBody
, par lesquels vous pouvez fournir mimeType , type de contenu , etc.
Une fois que vous avez fini de passer les instructions de construction au générateur, vous pouvez obtenir la construction HttpEntity
par appel de la méthode MultipartEntityBuilder#build()
:
HttpEntity entity = builder.build();
Je vois encore tellement de tutoriels utilisant toujours les API obsolètes, ce qui m'a amené à ce poste. Pour le bénéfice des futurs visiteurs (jusqu'à ce que cette API soit obsolète;))
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);
...