Java 如何将UrlEncodedFormEntity添加到MultipartEntityBuilder

Java 如何将UrlEncodedFormEntity添加到MultipartEntityBuilder,java,http,apache-httpclient-4.x,Java,Http,Apache Httpclient 4.x,我有一个文件要上传,所以我有您的标准MultipartEntityBuilder,如下所示: MultipartEntityBuilder multiPartEntity = MultipartEntityBuilder.create(); multiPartEntity.addBinaryBody("file", file); ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(

我有一个文件要上传,所以我有您的标准MultipartEntityBuilder,如下所示:

MultipartEntityBuilder multiPartEntity = MultipartEntityBuilder.create();
multiPartEntity.addBinaryBody("file", file);
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("userId",userId));
postParameters.add(new BasicNameValuePair("taskId",taskId));
new UrlEncodedFormEntity(postParameters)
我也有一些表单参数,我随帖子一起发送,如下所示:

MultipartEntityBuilder multiPartEntity = MultipartEntityBuilder.create();
multiPartEntity.addBinaryBody("file", file);
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("userId",userId));
postParameters.add(new BasicNameValuePair("taskId",taskId));
new UrlEncodedFormEntity(postParameters)
ArrayList后参数=新的ArrayList();
添加(新的BasicNameValuePair(“userId”,userId));
添加(新的BasicNameValuePair(“taskId”,taskId));
新UrlEncodedFormEntity(后参数)

两个都单独工作,我的问题是如何在一次通话中同时完成这两个任务?我需要将一个折叠成另一个,这样我就可以在一个HttpPost()调用中实现这一点。

您似乎混淆了
应用程序/x-www-form-urlencoded
多部分/表单数据
内容类型。发送多部分请求时,您使用的是
multipart/formdata
,在这种情况下,您不需要对内容进行URL编码。直接设置文本即可

MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
multipartEntityBuilder.addTextBody("userId", "someIdWith@url$encodable<>characters");
MultipartEntityBuilder MultipartEntityBuilder=MultipartEntityBuilder.create();
addBinaryBody(“文件”,file);
multipartEntityBuilder.addTextBody(“用户ID”)someIdWith@url$encodablecharacters”);