Skip to content

Commit 48b75f5

Browse files
author
Stephane Landelle
committed
Add RequestBuilder.setURI, like setUrl, close AsyncHttpClient#405
1 parent d6e5c15 commit 48b75f5

File tree

1 file changed

+7
-27
lines changed

1 file changed

+7
-27
lines changed

api/src/main/java/org/asynchttpclient/RequestBuilderBase.java

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,12 @@ protected RequestBuilderBase(Class<T> derived, Request prototype) {
369369
}
370370

371371
public T setUrl(String url) {
372-
request.originalUri = buildURI(url);
372+
return setURI(URI.create(url));
373+
}
374+
375+
public T setURI(URI uri) {
376+
request.originalUri = uri;
377+
addQueryParameters(request.originalUri);
373378
request.uri = null;
374379
request.rawUri = null;
375380
return derived.cast(this);
@@ -385,31 +390,7 @@ public T setLocalInetAddress(InetAddress address) {
385390
return derived.cast(this);
386391
}
387392

388-
private URI buildURI(String url) {
389-
URI uri = URI.create(url);
390-
391-
if (uri.getRawPath() == null) {
392-
// AHC-96
393-
// Let's try to derive it
394-
StringBuilder buildedUrl = new StringBuilder();
395-
396-
if (uri.getScheme() != null) {
397-
buildedUrl.append(uri.getScheme());
398-
buildedUrl.append("://");
399-
}
400-
401-
if (uri.getAuthority() != null) {
402-
buildedUrl.append(uri.getAuthority());
403-
}
404-
if (url.indexOf("://") == -1) {
405-
String s = buildedUrl.toString();
406-
url = s + url.substring(uri.getScheme().length() + 1);
407-
return buildURI(url);
408-
} else {
409-
throw new IllegalArgumentException("Invalid url " + uri.toString());
410-
}
411-
}
412-
393+
private void addQueryParameters(URI uri) {
413394
if (isNonEmpty(uri.getRawQuery())) {
414395
String[] queries = uri.getRawQuery().split("&");
415396
int pos;
@@ -430,7 +411,6 @@ private URI buildURI(String url) {
430411
}
431412
}
432413
}
433-
return uri;
434414
}
435415

436416
public T setVirtualHost(String virtualHost) {

0 commit comments

Comments
 (0)