From d276636bee1a97c2ddb96359cbe3d9d739c18d44 Mon Sep 17 00:00:00 2001 From: Nils Breunese Date: Fri, 19 Oct 2018 14:22:36 +0200 Subject: [PATCH] Allow setting headers using a Map with a subclass of CharSequence (for instance String) as the key type --- .../org/asynchttpclient/RequestBuilderBase.java | 4 ++-- .../org/asynchttpclient/RequestBuilderTest.java | 15 ++++++++++++--- .../extras/simple/SimpleAsyncHttpClient.java | 4 ++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java b/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java index 4a8a9e4474..35c8145776 100644 --- a/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java +++ b/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java @@ -267,7 +267,7 @@ public T setHeaders(HttpHeaders headers) { * @param headers map of header names as the map keys and header values {@link Iterable} as the map values * @return {@code this} */ - public T setHeaders(Map> headers) { + public T setHeaders(Map> headers) { clearHeaders(); if (headers != null) { headers.forEach((name, values) -> this.headers.add(name, values)); @@ -282,7 +282,7 @@ public T setHeaders(Map> headers) { * @param headers map of header names as the map keys and header values as the map values * @return {@code this} */ - public T setSingleHeaders(Map headers) { + public T setSingleHeaders(Map headers) { clearHeaders(); if (headers != null) { headers.forEach((name, value) -> this.headers.add(name, value)); diff --git a/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java b/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java index 8ffb9494f7..41fed53a4c 100644 --- a/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java +++ b/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java @@ -20,10 +20,7 @@ import io.netty.handler.codec.http.cookie.DefaultCookie; import org.testng.annotations.Test; -import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.*; -import java.util.concurrent.ExecutionException; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Collections.singletonList; @@ -174,4 +171,16 @@ public void testSettingQueryParamsBeforeUrlShouldNotProduceNPE() { Request request = requestBuilder.build(); assertEquals(request.getUrl(), "http://localhost?key=value"); } + + @Test + public void testSettingHeadersUsingMapWithStringKeys() { + Map> headers = new HashMap<>(); + headers.put("X-Forwarded-For", singletonList("10.0.0.1")); + + RequestBuilder requestBuilder = new RequestBuilder(); + requestBuilder.setHeaders(headers); + requestBuilder.setUrl("http://localhost"); + Request request = requestBuilder.build(); + assertEquals(request.getHeaders().get("X-Forwarded-For"), "10.0.0.1"); + } } diff --git a/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java b/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java index b58658fb57..8d5bf18afe 100644 --- a/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java +++ b/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java @@ -380,7 +380,7 @@ public interface DerivedBuilder { DerivedBuilder setFormParams(Map> params); - DerivedBuilder setHeaders(Map> headers); + DerivedBuilder setHeaders(Map> headers); DerivedBuilder setHeaders(HttpHeaders headers); @@ -465,7 +465,7 @@ public Builder setHeaders(HttpHeaders headers) { return this; } - public Builder setHeaders(Map> headers) { + public Builder setHeaders(Map> headers) { requestBuilder.setHeaders(headers); return this; }