Java 向ApacheHttpPost添加参数

Java 向ApacheHttpPost添加参数,java,post,parameters,httpclient,Java,Post,Parameters,Httpclient,我正在尝试向Servlet发送一个文件。 除了这个文件,我还必须发送一些参数(例如名称/id、日期和其他一些参数)。我在客户端使用HttpClient,在服务器端使用ServerFileUpload 这是客户端代码: 在服务器端,我们有: ServletFileUpload sup = new ServletFileUpload(); FileItemIterator it = sup.getItemIterator(request); FileItemStream item = it.ne

我正在尝试向Servlet发送一个文件。 除了这个文件,我还必须发送一些参数(例如名称/id、日期和其他一些参数)。我在客户端使用HttpClient,在服务器端使用ServerFileUpload

这是客户端代码:

在服务器端,我们有:

ServletFileUpload sup = new ServletFileUpload();
FileItemIterator it = sup.getItemIterator(request);
FileItemStream item = it.next();
InputStream ios = item.openStream();
//read from ios and write to a fileoutputstream.
现在,我不知道如何将上述参数添加到请求中。。。我尝试使用StringBody并将其添加到MultiPartEntity,但在以下位置得到了NullPointerException:

String author = request.getParameter("author");
这意味着这个参数可能不是一个参数

唯一让它工作的方法是将这些参数设置为header(setHeader和getHeader),但这不是一个选项

有什么建议吗?或者,您可以将我重定向到文件+参数上载的完整示例吗?
谢谢,

Alex

尝试使用粘贴在此处的类似代码:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

FileBody bin = new FileBody(new File(fileName));
StringBody comment = new StringBody("Filename: " + fileName);

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("bin", bin);
reqEntity.addPart("comment", comment);
httppost.setEntity(reqEntity);

HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
否则,还需要添加外部jar apache-mime4j-0.6.jar(org.apache.james.mime4j)

reqEntity.addPart("bin", bin);

不会编译

如果您使用servlet 3.0,您可以尝试将@MultipartConfig添加到您的servlet中。

@YoK您能告诉我通过setEntity()发送的参数的最大大小吗?httppost.setEntity(参数)是否有任何限制?
reqEntity.addPart("bin", bin);