web-dev-qa-db-fra.com

Le type MultipartEntity est obsolète

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);
42
Syam S

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();
109

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);
...
3
Neo