Changed getQuerystringParameters impl to form-urldecode the parameters

This commit is contained in:
Pablo Fernandez committed 2011-03-13 10:21:42 -03:00
1 parent 906a979e63
commit 22367de553
2 files changed
+34 -12

No files matched your search

+4 -10
View File
@@ -144,22 +144,16 @@ class Request
* Get a {@link Map} of the query string parameters. * Get a {@link Map} of the query string parameters.
* *
* @return a map containing the query string parameters * @return a map containing the query string parameters
* @throws OAuthException if the URL is not valid
*/ */
public Map<String, String> getQueryStringParams() public Map<String, String> getQueryStringParams()
{ {
try try
{ {
Map<String, String> params = new HashMap<String, String>(); Map<String, String> params = new HashMap<String, String>();
String query = new URL(url).getQuery(); String queryString = new URL(url).getQuery();
if (query != null) params.putAll(URLUtils.queryStringToMap(queryString));
{ params.putAll(this.querystringParams);
for (String param : query.split("&"))
{
String pair[] = param.split("=");
params.put(pair[0], pair[1]);
}
}
params.putAll(querystringParams);
return params; return params;
} }
catch (MalformedURLException mue) catch (MalformedURLException mue)
+30 -2
View File
@@ -13,8 +13,8 @@ public class URLUtils
{ {
private static final String EMPTY_STRING = ""; private static final String EMPTY_STRING = "";
private static final String UTF_8 = "UTF-8"; private static final String UTF_8 = "UTF-8";
private static final char PAIR_SEPARATOR = '='; private static final String PAIR_SEPARATOR = "=";
private static final char PARAM_SEPARATOR = '&'; private static final String PARAM_SEPARATOR = "&";
private static final char QUERY_STRING_SEPARATOR = '?'; private static final char QUERY_STRING_SEPARATOR = '?';
private static final String ERROR_MSG = String.format("Cannot find specified encoding: %s", UTF_8); private static final String ERROR_MSG = String.format("Cannot find specified encoding: %s", UTF_8);
@@ -133,6 +133,12 @@ public class URLUtils
} }
} }
/**
* Concats a key-value map into a querystring-like String
*
* @param params key-value map
* @return querystring-like String
*/
public static String concatSortedPercentEncodedParams(Map<String, String> params) public static String concatSortedPercentEncodedParams(Map<String, String> params)
{ {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
@@ -144,6 +150,28 @@ public class URLUtils
return result.toString().substring(0, result.length() - 1); return result.toString().substring(0, result.length() - 1);
} }
/**
* Parses and form-urldecodes a querystring-like string into a map
*
* @param queryString querystring-like String
* @return a map with the form-urldecoded parameters
*/
public static Map<String, String> queryStringToMap(String queryString)
{
Map<String, String> result = new HashMap<String, String>();
if (queryString != null && queryString.length() > 0)
{
for (String param : queryString.split(PARAM_SEPARATOR))
{
String pair[] = param.split(PAIR_SEPARATOR);
String key = formURLDecode(pair[0]);
String value = pair.length > 1 ? formURLDecode(pair[1]) : EMPTY_STRING;
result.put(key, value);
}
}
return result;
}
private static final class EncodingRule private static final class EncodingRule
{ {
private final String ch; private final String ch;