diff --git a/src/main/java/org/scribe/model/Request.java b/src/main/java/org/scribe/model/Request.java index 223b1d2..6465c95 100644 --- a/src/main/java/org/scribe/model/Request.java +++ b/src/main/java/org/scribe/model/Request.java @@ -73,14 +73,24 @@ class Request private void createConnection() throws IOException { - String effectiveUrl = querystringParams.appendTo(url); + String completeUrl = getCompleteUrl(); if (connection == null) { System.setProperty("http.keepAlive", connectionKeepAlive ? "true" : "false"); - connection = (HttpURLConnection) new URL(effectiveUrl).openConnection(); + connection = (HttpURLConnection) new URL(completeUrl).openConnection(); } } + /** + * Returns the complete url (host + resource + encoded querystring parameters). + * + * @return the complete url. + */ + public String getCompleteUrl() + { + return querystringParams.appendTo(url); + } + Response doSend() throws IOException { connection.setRequestMethod(this.verb.name()); diff --git a/src/test/java/org/scribe/model/RequestTest.java b/src/test/java/org/scribe/model/RequestTest.java index f2ddc93..c473e77 100644 --- a/src/test/java/org/scribe/model/RequestTest.java +++ b/src/test/java/org/scribe/model/RequestTest.java @@ -73,6 +73,15 @@ public class RequestTest assertEquals(3, request.getQueryStringParams().size()); } + @Test + public void shouldReturnTheCompleteUrl() + { + Request request = new Request(Verb.GET, "http://example.com?one=val"); + request.addQuerystringParameter("two", "other val"); + request.addQuerystringParameter("more", "params"); + assertEquals("http://example.com?one=val&two=other%20val&more=params", request.getCompleteUrl()); + } + @Test public void shouldHandleQueryStringSpaceEncodingProperly() {