首页 >Java >java教程 >如何在 Java 中发送多部分/表单数据 POST 请求?

如何在 Java 中发送多部分/表单数据 POST 请求?

Linda Hamilton
Linda Hamilton原创
2024-12-09 11:41:14614浏览

How Can I Send Multipart/Form-Data POST Requests in Java?

使用 Apache Commons HttpClient 在 Java 中进行多部分/表单数据 POST 请求

在 HttpClient 版本 4.0 之前,可以发送多部分/form-data POST 请求。然而,这个功能在 4.0 版本中被删除了。 HttpClient 开发人员认为多部分处理超出了他们的项目范围。

用于多部分/表单数据 POST 请求的替代 Java 库:

尽管缺少多部分HttpClient 4.0 中的支持,多个 Java 库提供了此支持功能:

  • Apache Commons FileUpload: Apache 的专用多部分解析和格式化库。
  • Jersey 客户端: REST API 客户端通过其 Form 包含多部分支持的框架
  • OkHttp: 一个现代、高效的 HTTP 客户端,内置多部分请求支持。
  • UniRest: 一个轻量级 HTTP 请求库,具有多部分功能。

使用 HttpClient 的示例实现4.3:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("...");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN);

// Attaching the file to the POST:
File f = new File("[/path/to/upload]");
builder.addBinaryBody(
    "file",
    new FileInputStream(f),
    ContentType.APPLICATION_OCTET_STREAM,
    f.getName()
);

HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);

使用旧版 HttpClient 4.0 的示例实现(已弃用):

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

结论:

虽然 HttpClient 4.0 没有默认支持 multipart/form-data POST 请求,替代的 Java 库和代码片段可以帮助开发人员实现此功能。通过利用这些资源,用户可以有效地实现处理多部分请求的 HTTP 客户端,并与 Zoho Writer 的远程 API 等 Web 服务无缝集成。

以上是如何在 Java 中发送多部分/表单数据 POST 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn