52

文档说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);
4

2 回答 2

116

如果您仔细阅读文档,您会注意到您应该使用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,您可以通过它们提供mimeTypecontent type等。

构建指令传递给构建器后,您可以HttpEntity通过调用该MultipartEntityBuilder#build()方法来获取构建:

HttpEntity entity = builder.build();
于 2013-10-05T10:18:48.610 回答
6

我仍然看到很多教程仍在使用已弃用的 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);
...
于 2017-05-10T22:29:35.170 回答