Changed getQuerystringParameters impl to form-urldecode the parameters
This commit is contained in:
1 parent
906a979e63
commit
22367de553
2 files changed
+34
-12
No files matched your search
@@ -144,22 +144,16 @@ class Request
|
||||
* Get a {@link Map} of 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()
|
||||
{
|
||||
try
|
||||
{
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
String query = new URL(url).getQuery();
|
||||
if (query != null)
|
||||
{
|
||||
for (String param : query.split("&"))
|
||||
{
|
||||
String pair[] = param.split("=");
|
||||
params.put(pair[0], pair[1]);
|
||||
}
|
||||
}
|
||||
params.putAll(querystringParams);
|
||||
String queryString = new URL(url).getQuery();
|
||||
params.putAll(URLUtils.queryStringToMap(queryString));
|
||||
params.putAll(this.querystringParams);
|
||||
return params;
|
||||
}
|
||||
catch (MalformedURLException mue)
|
||||
|
||||
@@ -13,8 +13,8 @@ public class URLUtils
|
||||
{
|
||||
private static final String EMPTY_STRING = "";
|
||||
private static final String UTF_8 = "UTF-8";
|
||||
private static final char PAIR_SEPARATOR = '=';
|
||||
private static final char PARAM_SEPARATOR = '&';
|
||||
private static final String PAIR_SEPARATOR = "=";
|
||||
private static final String PARAM_SEPARATOR = "&";
|
||||
private static final char QUERY_STRING_SEPARATOR = '?';
|
||||
|
||||
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)
|
||||
{
|
||||
StringBuilder result = new StringBuilder();
|
||||
@@ -144,6 +150,28 @@ public class URLUtils
|
||||
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 final String ch;
|
||||
|
||||
Reference in new issue
Block a user