Skip to content

Commit 29177db

Browse files
tsegismontilia1243
andauthored
Only one header value of several is sent with MultipartForm body (#2704)
* [2678] Send multiple headers for url-encoded and multipart-form bodies Bug: #2678 * Updates after review We should keep and simplify multipart form headers copying. The changes in HttpRequestImpl can be reverted. Signed-off-by: Thomas Segismont <[email protected]> --------- Signed-off-by: Thomas Segismont <[email protected]> Co-authored-by: ilia1243 <[email protected]>
1 parent 9a18cdc commit 29177db

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

vertx-web-client/src/main/java/io/vertx/ext/web/client/impl/HttpContext.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -443,12 +443,9 @@ private void handleCreateRequest() {
443443
fail(e);
444444
return;
445445
}
446-
for (String headerName : this.request.headers().names()) {
447-
requestOptions.putHeader(headerName, this.request.headers().get(headerName));
448-
}
449-
multipartForm.headers().forEach(header -> {
446+
for (Map.Entry<String, String> header : multipartForm.headers()) {
450447
requestOptions.putHeader(header.getKey(), header.getValue());
451-
});
448+
}
452449
}
453450
if (body instanceof ReadStream<?>) {
454451
ReadStream<Buffer> stream = (ReadStream<Buffer>) body;

vertx-web-client/src/test/java/io/vertx/ext/web/client/tests/WebClientTest.java

+34
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,23 @@ public void testFormUrlEncodedUnescaped() throws Exception {
11831183
await();
11841184
}
11851185

1186+
@Test
1187+
public void testFormUrlEncodedMultipleHeaders() throws Exception {
1188+
server.requestHandler(req -> {
1189+
req.setExpectMultipart(true);
1190+
req.endHandler(v -> {
1191+
assertEquals(Arrays.asList("1", "2"), req.headers().getAll("bla"));
1192+
req.response().end();
1193+
});
1194+
});
1195+
startServer();
1196+
MultiMap form = MultiMap.caseInsensitiveMultiMap();
1197+
HttpRequest<Buffer> builder = webClient.post("/somepath");
1198+
builder.putHeader("bla", Arrays.asList("1", "2"));
1199+
builder.sendForm(form).onComplete(onSuccess(resp -> complete()));
1200+
await();
1201+
}
1202+
11861203
@Test
11871204
public void testFormMultipart() throws Exception {
11881205
server.requestHandler(req -> {
@@ -1395,6 +1412,23 @@ static Upload memoryUpload(String name, String filename, Buffer data) {
13951412
}
13961413
}
13971414

1415+
@Test
1416+
public void testMultipartFormMultipleHeaders() throws Exception {
1417+
server.requestHandler(req -> {
1418+
req.setExpectMultipart(true);
1419+
req.endHandler(v -> {
1420+
assertEquals(Arrays.asList("1", "2"), req.headers().getAll("bla"));
1421+
req.response().end();
1422+
});
1423+
});
1424+
startServer();
1425+
HttpRequest<Buffer> builder = webClient.post("somepath");
1426+
MultipartForm form = MultipartForm.create();
1427+
builder.putHeader("bla", Arrays.asList("1", "2"));
1428+
builder.sendMultipartForm(form).onComplete(onSuccess(resp -> complete()));
1429+
await();
1430+
}
1431+
13981432
@Test
13991433
public void testFileUploadWhenFileDoesNotExist() {
14001434
HttpRequest<Buffer> builder = webClient.post("somepath");

0 commit comments

Comments
 (0)