我正在使用 java.net.http
上提供的 HttpClient
和 HttpRequest
。我已经成功发送了一些 GET 和 POST 请求,但我不知道如何使用 multipart/form-data
body 发送 PUT/POST 请求:
HttpRequest dataRequest = HttpRequest.newBuilder()
.header("accept", "*/*")
.header("Content-Type", "multipart/form-data")
// .POST() ??
.uri(URI.create(DATA_URL)
.build();
该请求的curl 等效项类似于:
curl -X PUT "https://www.example.com/data" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a3c5cacfc69ee3c2d6c7caccc5cacfc68dd4c2d5" rel="noreferrer noopener nofollow">[email protected]</a>;type=audio/wav"
我应该在 POST()
或 PUT()
方法中使用某种 BodyPublishers
来实现这一目标吗?有什么线索吗?
最佳答案
HttpClient API 尚不支持开箱即用的 Multipart/form-data。
在 JDK 16 中,有一个新的 HttpRequest.BodyPublishers.concat(BodyPublisher...)
方法,可用于帮助构建通过来自异构源的字节串联构建的请求正文。
但是您必须手动组合所有不同的部分,并在需要时处理 base64 编码。
您还可以尝试methanol
关于java - 如何使用 Java Http 客户端发送带有 multipart/form-data 主体的 PUT 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67017711/