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

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

Susan Sarandon
发布: 2024-12-09 14:35:19
原创
306 人浏览过

How to Make Multipart/Form-Data POST Requests in Java?

用 Java 发出 Multipart/Form-Data POST 请求

HTTP 的 multipart/form-data 编码通常用于文件上传,允许客户端发送文本和单个请求中的二进制数据。虽然 Apache Commons HttpClient 3.x 支持此功能,但它在版本 4.0 中被删除。本文探讨了支持多部分/表单数据 POST 请求的替代 Java 库。

尽管联系了 HttpClient 项目,但还没有已知的努力来重新实现多部分支持。因此,开发人员必须寻求替代解决方案来满足他们的多部分/表单数据需求。

解决方案

HttpClient 4.x,当前的稳定版本,提供了更现代的用于处理多部分请求的 API。以下是使用更新后的 API 的示例:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("...");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN);
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);
HttpEntity responseEntity = response.getEntity();
登录后复制

对于仍在使用 HttpClient 4.0(不推荐)的开发人员,以下代码片段使用已弃用的 API:

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();
登录后复制

其他 Java 库支持多部分/表单数据 POST 请求包括:

  • Apache HTTP 组件HttpComponents-Client:一个现代的、线程安全的 HTTP 客户端库
  • Jersey Client API:一个高级、易于使用的 RESTful Web 服务客户端库
  • Grizzly REST Framework:一个框架用于构建 RESTful Web 服务

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板