如何将UrlEncodedFormEntity添加到MultipartEntityBuilder

时间:2014-03-25 02:11:08

标签: java http apache-httpclient-4.x

我有一个我要上传的文件,所以我有这样的标准MultipartEntityBuilder:

MultipartEntityBuilder multiPartEntity = MultipartEntityBuilder.create();
multiPartEntity.addBinaryBody("file", file);

我也有一些表格参数,我用POST这样发送:

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("userId",userId));
postParameters.add(new BasicNameValuePair("taskId",taskId));
new UrlEncodedFormEntity(postParameters)

两者都是单独工作,我的问题如何在一个电话中同时进行?我需要将一个折叠到另一个中,这样我就可以在一个HttpPost()调用中进行此操作。

1 个答案:

答案 0 :(得分:2)

您似乎对application/x-www-form-urlencodedmultipart/form-data内容类型感到困惑。发送多部分请求时,您使用的是multipart/form-data,在这种情况下,您无需对内容进行URL编码。只需直接设置文本

MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
multipartEntityBuilder.addTextBody("userId", "someIdWith@url$encodable<>characters");

See the specification for more details.