Skip to content

Commit 3897106

Browse files
author
Stephane Landelle
committed
Add RequestBuilder.setURI, like setUrl, backport AsyncHttpClient#405
1 parent da09dbe commit 3897106

File tree

1 file changed

+7
-28
lines changed

1 file changed

+7
-28
lines changed

src/main/java/com/ning/http/client/RequestBuilderBase.java

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

372372
public T setUrl(String url) {
373-
request.originalUri = buildURI(url);
373+
return setURI(URI.create(url));
374+
}
375+
376+
public T setURI(URI uri) {
377+
request.originalUri = uri;
378+
addQueryParameters(request.originalUri);
374379
request.uri = null;
375380
request.rawUri = null;
376381
return derived.cast(this);
@@ -386,32 +391,7 @@ public T setLocalInetAddress(InetAddress address) {
386391
return derived.cast(this);
387392
}
388393

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

438417
public T setVirtualHost(String virtualHost) {

0 commit comments

Comments
 (0)