diff --git a/gradle.properties b/gradle.properties index 52208db..88a8f58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group = org.xbib name = net-http -version = 4.0.9 +version = 4.0.10 diff --git a/net-http-client-netty/src/main/java/org/xbib/net/http/client/netty/HttpRequest.java b/net-http-client-netty/src/main/java/org/xbib/net/http/client/netty/HttpRequest.java index a5ab0a5..a0d9c8f 100644 --- a/net-http-client-netty/src/main/java/org/xbib/net/http/client/netty/HttpRequest.java +++ b/net-http-client-netty/src/main/java/org/xbib/net/http/client/netty/HttpRequest.java @@ -69,6 +69,7 @@ public class HttpRequest extends BaseHttpRequest { .setVersion(httpRequest.getVersion()) .setURL(httpRequest.getURL()) .setHeaders(httpRequest.getHeaders()) + .setParameterBuilder(httpRequest.getParameterBuilder()) .content(httpRequest.getBody()) .setResponseListener(httpRequest.getResponseListener()) .setTimeoutListener(httpRequest.getTimeoutListener(), httpRequest.getTimeoutMillis()) diff --git a/net-http-client-netty/src/test/java/org/xbib/net/http/client/netty/ParameterTest.java b/net-http-client-netty/src/test/java/org/xbib/net/http/client/netty/ParameterTest.java new file mode 100644 index 0000000..10d7618 --- /dev/null +++ b/net-http-client-netty/src/test/java/org/xbib/net/http/client/netty/ParameterTest.java @@ -0,0 +1,28 @@ +package org.xbib.net.http.client.netty; + +import org.junit.jupiter.api.Test; +import org.xbib.net.URL; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ParameterTest { + + @Test + public void testGetParametersWithSharedUrl() { + URL url = URL.from("http://example.com"); + Map map1 = Map.of("a", "b"); + HttpRequest request1 = HttpRequest.get() + .setURL(url) + .setParameters(map1) + .build(); + assertEquals("http://example.com?a=b", request1.getURL().toString()); + Map map2 = Map.of("c", "d"); + HttpRequest request2 = HttpRequest.get() + .setURL(url) + .setParameters(map2) + .build(); + assertEquals("http://example.com?c=d", request2.getURL().toString()); + } +} diff --git a/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequest.java b/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequest.java index 4fe1980..f113dca 100644 --- a/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequest.java +++ b/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequest.java @@ -33,8 +33,8 @@ public abstract class BaseHttpRequest implements HttpRequest { // validate request HttpHeaders validatedHeaders = HttpHeaders.of(builder.httpHeaders); if (builder.url != null) { - // add our URI parameters to the URL - URLBuilder urlBuilder = builder.url.mutator(); + // create new URL object so we can safely add our URI parameters to the URL by mutating it + URLBuilder urlBuilder = URL.from(builder.url).mutator(); if (builder.requestPath != null) { urlBuilder.path(builder.requestPath); } diff --git a/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequestBuilder.java b/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequestBuilder.java index bfe347f..ef4227e 100644 --- a/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequestBuilder.java +++ b/net-http-client/src/main/java/org/xbib/net/http/client/BaseHttpRequestBuilder.java @@ -27,8 +27,6 @@ import org.xbib.net.http.cookie.Cookie; public abstract class BaseHttpRequestBuilder implements HttpRequestBuilder { - private static final URL DEFAULT_URL = URL.from("http://localhost"); - private static final String DEFAULT_FORM_CONTENT_TYPE = "application/x-www-form-urlencoded; charset=utf-8"; /** @@ -98,7 +96,7 @@ public abstract class BaseHttpRequestBuilder implements HttpRequestBuilder { protected BaseHttpRequestBuilder() { this.httpMethod = HttpMethod.GET; this.httpVersion = HttpVersion.HTTP_1_1; - this.url = DEFAULT_URL; + this.url = URL.from("http://localhost"); // will mutate for get parameters, create new object this.contentType = DEFAULT_FORM_CONTENT_TYPE; this.userAgent = getUserAgent(); this.isGzipEnabled = false; diff --git a/settings.gradle b/settings.gradle index b980585..32ee8d9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,7 +6,7 @@ dependencyResolutionManagement { version('netty', '4.1.104.Final') version('netty-tcnative', '2.0.62.Final') version('datastructures', '5.0.6') - version('net', '4.0.3') + version('net', '4.0.4') library('netty-codec-http2', 'io.netty', 'netty-codec-http2').versionRef('netty') library('netty-handler', 'io.netty', 'netty-handler').versionRef('netty') library('netty-handler-proxy', 'io.netty', 'netty-handler-proxy').versionRef('netty')