从url android中提取参数值

时间:2015-06-04 09:35:05

标签: java android

public static Hashtable parseUrlString(String url) {
    Hashtable parameter = new Hashtable();
    List<NameValuePair> params = null;
    try {
        params = URLEncodedUtils.parse(new URI(url), "UTF-8");
        for (NameValuePair param : params) {
            if (param.getName() != null && param.getValue() != null)
                parameter.put(param.getName(), param.getValue());
        }
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    return parameter;
}

上面的方法适用于我将参数名称的值提取到哈希表,但在Api 21+中,NameValuePair和 URLEncodedUtils 已被弃用,那么我可以用这种方法替换这种方法的最佳方法是什么? / p>

5 个答案:

答案 0 :(得分:10)

在Android中,您绝不应该使用现已弃用的URLEncodedUtils。一个很好的选择是使用Uri类:使用getQueryParameterNames()检索查询参数键,然后迭代它们并使用getQueryParameter()检索每个值。

答案 1 :(得分:8)

您可以使用android.net.Uri。

Uri uri=Uri.parse(url);

它有getQueryParameterNames()和uri.getQueryParameter(parameterNameString);

答案 2 :(得分:4)

已经回答,但这里是写出的方法

public static HashMap<String, String> getQueryString(String url) {
    Uri uri= Uri.parse(url);

    HashMap<String, String> map = new HashMap<>();
    for (String paramName : uri.getQueryParameterNames()) {
        if (paramName != null) {
            String paramValue = uri.getQueryParameter(paramName);
            if (paramValue != null) {
                map.put(paramName, paramValue);
            }
        }
    }
    return map;
}

答案 3 :(得分:4)

尝试:

 Uri uri = Uri.parse(yourStrUrl);
 String paramValue = uri.getQueryParameter("yourParam");

答案 4 :(得分:0)

您可以尝试ContentValues

for (ContentValues param : params) {
            if (param.getName() != null && param.getValue() != null)
                parameter.put(param.getName(), param.getValue());
        }