diff --git a/vertx-web-client/src/main/java/io/vertx/ext/web/client/HttpRequest.java b/vertx-web-client/src/main/java/io/vertx/ext/web/client/HttpRequest.java index 4d36d1deb0..5a4c12e23b 100644 --- a/vertx-web-client/src/main/java/io/vertx/ext/web/client/HttpRequest.java +++ b/vertx-web-client/src/main/java/io/vertx/ext/web/client/HttpRequest.java @@ -32,6 +32,7 @@ import io.vertx.uritemplate.Variables; import io.vertx.uritemplate.UriTemplate; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -182,6 +183,21 @@ public interface HttpRequest { @Fluent HttpRequest putHeader(String name, String value); + /** + * Configure the request to set a new HTTP header using CharSequence. + *

+ * This is an overload of {@link #putHeader(String, String)} that accepts CharSequence parameters. + * + * @param name the header name + * @param value the header value + * @return a reference to this, so the API can be used fluently + */ + @Fluent + @GenIgnore(GenIgnore.PERMITTED_TYPE) + default HttpRequest putHeader(CharSequence name, CharSequence value) { + return putHeader(name.toString(), value.toString()); + } + /** * Configure the request to set a new HTTP header with multiple values. * @@ -193,6 +209,25 @@ public interface HttpRequest { @GenIgnore(GenIgnore.PERMITTED_TYPE) HttpRequest putHeader(String name, Iterable value); + /** + * Configure the request to set a new HTTP header with multiple values using CharSequence. + *

+ * This is an overload of {@link #putHeader(String, Iterable)} that accepts CharSequence parameters. + * + * @param name the header name + * @param value the header value + * @return a reference to this, so the API can be used fluently + */ + @Fluent + @GenIgnore(GenIgnore.PERMITTED_TYPE) + default HttpRequest putHeader(CharSequence name, Iterable value) { + List values = new ArrayList<>(); + for (CharSequence cs : value) { + values.add(cs.toString()); + } + return putHeader(name.toString(), values); + } + /** * @return The HTTP headers */ diff --git a/vertx-web-client/src/main/java/io/vertx/ext/web/client/impl/HttpRequestImpl.java b/vertx-web-client/src/main/java/io/vertx/ext/web/client/impl/HttpRequestImpl.java index 6df9471b4c..8abfe5fa0b 100644 --- a/vertx-web-client/src/main/java/io/vertx/ext/web/client/impl/HttpRequestImpl.java +++ b/vertx-web-client/src/main/java/io/vertx/ext/web/client/impl/HttpRequestImpl.java @@ -231,12 +231,24 @@ public HttpRequest putHeader(String name, String value) { return this; } + @Override + public HttpRequest putHeader(CharSequence name, CharSequence value) { + headers().set(name, value); + return this; + } + @Override public HttpRequest putHeader(String name, Iterable value) { headers().set(name, value); return this; } + @Override + public HttpRequest putHeader(CharSequence name, Iterable value) { + headers().set(name, value); + return this; + } + @Override public MultiMap headers() { if (headers == null) { diff --git a/vertx-web-client/src/test/java/io/vertx/ext/web/client/tests/WebClientTest.java b/vertx-web-client/src/test/java/io/vertx/ext/web/client/tests/WebClientTest.java index 758e0f02d1..73957fa722 100644 --- a/vertx-web-client/src/test/java/io/vertx/ext/web/client/tests/WebClientTest.java +++ b/vertx-web-client/src/test/java/io/vertx/ext/web/client/tests/WebClientTest.java @@ -1255,7 +1255,7 @@ public void testFormUrlEncodedMultipleHeaders() throws Exception { startServer(); MultiMap form = MultiMap.caseInsensitiveMultiMap(); HttpRequest builder = webClient.post("/somepath"); - builder.putHeader("bla", Arrays.asList("1", "2")); + builder.putHeader((CharSequence) "bla", Arrays.asList("1", "2")); builder.sendForm(form).onComplete(onSuccess(resp -> complete())); await(); } @@ -1485,7 +1485,7 @@ public void testMultipartFormMultipleHeaders() throws Exception { startServer(); HttpRequest builder = webClient.post("somepath"); MultipartForm form = MultipartForm.create(); - builder.putHeader("bla", Arrays.asList("1", "2")); + builder.putHeader((CharSequence) "bla", Arrays.asList("1", "2")); builder.sendMultipartForm(form).onComplete(onSuccess(resp -> complete())); await(); } @@ -2161,7 +2161,7 @@ public void testMultipleHeaders() throws Exception { testRequest( client -> client .get("somepath") - .putHeader("bla", Arrays.asList("1", "2")), + .putHeader((CharSequence) "bla", Arrays.asList("1", "2")), req -> assertEquals(Arrays.asList("1", "2"), req.headers().getAll("bla"))); }