如何使用 Java Http 客户端发送带有 multipart/form-data 正文的 PUT 请求?
How to send a PUT request with multipart/form-data body with Java Http Client?
我正在使用 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 "file=@audiofile.wav;type=audio/wav"
我应该在 POST()
或 PUT()
方法中使用某种 BodyPublishers
来实现吗?有什么线索吗?
Multipart/form-data 尚不支持 HttpClient API。
在 JDK 16 中有一个新的 HttpRequest.BodyPublishers.concat(BodyPublisher...)
方法,可用于帮助构建请求主体,该请求主体由来自异构源的字节串接而成。
但是您必须手动组合所有不同的部分,并处理所需的 base64 编码 when/if。
你也可以试试methanol
我正在使用 java.net.http
上可用的 HttpClient
和 HttpRequest
。我已经成功发送了一些 GET 和 POST 请求,但我不知道如何发送带有 multipart/form-data
body:
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 "file=@audiofile.wav;type=audio/wav"
我应该在 POST()
或 PUT()
方法中使用某种 BodyPublishers
来实现吗?有什么线索吗?
Multipart/form-data 尚不支持 HttpClient API。
在 JDK 16 中有一个新的 HttpRequest.BodyPublishers.concat(BodyPublisher...)
方法,可用于帮助构建请求主体,该请求主体由来自异构源的字节串接而成。
但是您必须手动组合所有不同的部分,并处理所需的 base64 编码 when/if。
你也可以试试methanol