From fc479c71f74a275d2eb22dbec2c177f972ed46c6 Mon Sep 17 00:00:00 2001 From: Noor Dawod Date: Sun, 4 Jan 2015 14:20:07 +0100 Subject: [PATCH] Introduce getURI(String) method to convert a String to a URI. This is particularly useful in situations where the original URL contains special characters that must be retained, for example a '+' sign, and not converted to its encoded form ('%20', in case of '+'). --- .../loopj/android/http/AsyncHttpClient.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java b/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java index 26103183f..bee662e38 100755 --- a/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java +++ b/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java @@ -954,7 +954,7 @@ public RequestHandle post(Context context, String url, RequestParams params, Res * @return RequestHandle of future request process */ public RequestHandle post(Context context, String url, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) { - return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPost(URI.create(url).normalize()), entity), contentType, responseHandler, context); + return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPost(getURI(url)), entity), contentType, responseHandler, context); } /** @@ -972,7 +972,7 @@ public RequestHandle post(Context context, String url, HttpEntity entity, String */ public RequestHandle post(Context context, String url, Header[] headers, RequestParams params, String contentType, ResponseHandlerInterface responseHandler) { - HttpEntityEnclosingRequestBase request = new HttpPost(URI.create(url).normalize()); + HttpEntityEnclosingRequestBase request = new HttpPost(getURI(url)); if (params != null) request.setEntity(paramsToEntity(params, responseHandler)); if (headers != null) request.setHeaders(headers); return sendRequest(httpClient, httpContext, request, contentType, @@ -996,7 +996,7 @@ public RequestHandle post(Context context, String url, Header[] headers, Request */ public RequestHandle post(Context context, String url, Header[] headers, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) { - HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPost(URI.create(url).normalize()), entity); + HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPost(getURI(url)), entity); if (headers != null) request.setHeaders(headers); return sendRequest(httpClient, httpContext, request, contentType, responseHandler, context); } @@ -1055,7 +1055,7 @@ public RequestHandle put(Context context, String url, RequestParams params, Resp * @return RequestHandle of future request process */ public RequestHandle put(Context context, String url, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) { - return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPut(URI.create(url).normalize()), entity), contentType, responseHandler, context); + return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPut(getURI(url)), entity), contentType, responseHandler, context); } /** @@ -1074,7 +1074,7 @@ public RequestHandle put(Context context, String url, HttpEntity entity, String * @return RequestHandle of future request process */ public RequestHandle put(Context context, String url, Header[] headers, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) { - HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPut(URI.create(url).normalize()), entity); + HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPut(getURI(url)), entity); if (headers != null) request.setHeaders(headers); return sendRequest(httpClient, httpContext, request, contentType, responseHandler, context); } @@ -1124,7 +1124,7 @@ public RequestHandle patch(Context context, String url, RequestParams params, Re * @return RequestHandle of future request process */ public RequestHandle patch(Context context, String url, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) { - return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPatch(URI.create(url).normalize()), entity), contentType, responseHandler, context); + return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPatch(getURI(url)), entity), contentType, responseHandler, context); } /** @@ -1143,7 +1143,7 @@ public RequestHandle patch(Context context, String url, HttpEntity entity, Strin * @return RequestHandle of future request process */ public RequestHandle patch(Context context, String url, Header[] headers, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) { - HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPatch(URI.create(url).normalize()), entity); + HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPatch(getURI(url)), entity); if (headers != null) request.setHeaders(headers); return sendRequest(httpClient, httpContext, request, contentType, responseHandler, context); } @@ -1171,7 +1171,7 @@ public RequestHandle delete(String url, ResponseHandlerInterface responseHandler * @return RequestHandle of future request process */ public RequestHandle delete(Context context, String url, ResponseHandlerInterface responseHandler) { - final HttpDelete delete = new HttpDelete(URI.create(url).normalize()); + final HttpDelete delete = new HttpDelete(getURI(url)); return sendRequest(httpClient, httpContext, delete, null, responseHandler, context); } @@ -1185,7 +1185,7 @@ public RequestHandle delete(Context context, String url, ResponseHandlerInterfac * @return RequestHandle of future request process */ public RequestHandle delete(Context context, String url, Header[] headers, ResponseHandlerInterface responseHandler) { - final HttpDelete delete = new HttpDelete(URI.create(url).normalize()); + final HttpDelete delete = new HttpDelete(getURI(url)); if (headers != null) delete.setHeaders(headers); return sendRequest(httpClient, httpContext, delete, null, responseHandler, context); } @@ -1299,6 +1299,16 @@ protected RequestHandle sendRequest(DefaultHttpClient client, HttpContext httpCo return requestHandle; } + /** + * Returns a {@link URI} instance for the specified, absolute URL string. + * + * @param url absolute URL string, containing scheme, host and path + * @return URI instance for the URL string + */ + protected URI getURI(String url) { + return URI.create(url).normalize(); + } + /** * Sets state of URL encoding feature, see bug #227, this method allows you to turn off and on * this auto-magic feature on-demand.