java - 向 Apache HttpPost 添加参数

标签 java post parameters httpclient

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

这是客户端代码: ...

String url = "http://localhost:8080/RicezioneServlet/RicezioneServlet";
HttpClient httpclient = new DefaultHttpClient();
HttpPost postMethod = new HttpPost(url);
MultipartEntity mpe = new MultipartEntity();
//I'm sending a .zip file
ContentBody cb = new FileBody(fileToSend,"application/zip");
mpe.addPart("file", cb);
postMethod.setEntity(mpe);
HttpResponse resp = httpclient.execute(postMethod);
HttpEntity respEntity = resp.getEntity();
System.out.println(resp.getStatusLine());

...

在服务器端,我们有:

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),但这不是一个选项。

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

最佳答案

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

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

无法编译。

关于java - 向 Apache HttpPost 添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3367870/

相关文章:

java - java中从文件输入

java - 用 Java 编写 Midi 文件

ios - 帖子的神秘网络问题。 Wifi 工作,手机不

post - cURL 有效,但没有其他客户端使用 Go sebserver

java - 从自定义 URL 处理程序获取参数

arrays - 如何创建具有二维或多维数组参数的过程?

java - 如何根据字符串的组合删除重复项?

angularjs - 使用 Angular 将数据发布到 Moodle API

javascript - IE 不将 url 参数传递给 js 脚本吗?

java - 如何在 Java 中仅初始化一次局部变量