我必须实现Vertx POST请求。通过Postman,请求如下图所示:
棘手的部分是服务器需要密钥" upgrade_file"对于身体。我无法找到如何使用Vertx做到这一点。这就是我到目前为止所做的:
Buffer bodyBuffer = Buffer.buffer(body); // body is byte[]
HttpClientRequest request = ...
request.handler( response -> ...
request.end(bodyBuffer);
如何设置" upgrade_file"作为身体的关键?
答案 0 :(得分:0)
使用WebClient代替HTTP客户端,它为提交表单提供专门支持。
WebClient client = WebClient.create(vertx);
或者如果您已经创建了http客户端:
WebClient client = WebClient.wrap(httpClient);
然后将表单数据创建为map,并使用正确的内容类型发送表单
MultiMap form = MultiMap.caseInsensitiveMultiMap();
form.set("upgrade_file", "...");
// Submit the form as a multipart form body
client.post(8080, "yourhost", "/some_address")
.putHeader("content-type", "multipart/form-data")
.sendForm(form, ar -> {
//do something with the response
});
答案 1 :(得分:0)
如果您想发送文件,最简单的方法是使用 Vertx WebClient 的 sendMultipartForm
方法。
首先创建一个 Multipartform
。
MultipartForm form = MultipartForm.create()
.attribute("imageDescription", "a very nice image")
.binaryFileUpload(
"imageFile",
"image.jpg",
"/path/to/image",
"image/jpeg");
然后调用 WebClient.sendMultipartForm(form)
发送请求。
通用的 Vertx HttpClient 是一个低级 API,您应该将表单数据序列化为字符串或缓冲区,格式类似于 this example file in Vertx GraphQL testing codes。然后将缓冲区发送到服务器端。