use copy URLs because they can mutate (very ugly thing)
This commit is contained in:
parent
fa3fa2e958
commit
5b46911bd8
6 changed files with 34 additions and 7 deletions
|
@ -1,3 +1,3 @@
|
|||
group = org.xbib
|
||||
name = net-http
|
||||
version = 4.0.9
|
||||
version = 4.0.10
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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<String, Object> map1 = Map.of("a", "b");
|
||||
HttpRequest request1 = HttpRequest.get()
|
||||
.setURL(url)
|
||||
.setParameters(map1)
|
||||
.build();
|
||||
assertEquals("http://example.com?a=b", request1.getURL().toString());
|
||||
Map<String, Object> map2 = Map.of("c", "d");
|
||||
HttpRequest request2 = HttpRequest.get()
|
||||
.setURL(url)
|
||||
.setParameters(map2)
|
||||
.build();
|
||||
assertEquals("http://example.com?c=d", request2.getURL().toString());
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in a new issue