提取参数值
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;
}
上述方法对我的作品与价值提取参数名的哈希表,但在阿比21+的的NameValuePair和URLEncodedUtils已被弃用等什么是我可以替代的最佳方式这种方法?提取参数值
在Android中,你不应该使用URLEncodedUtils现在已不建议。一个好的选择是使用Uri类代替:使用getQueryParameterNames()
检索查询参数键,然后迭代它们并使用getQueryParameter()
检索每个值。
您可以尝试ContentValues
for (ContentValues param : params) {
if (param.getName() != null && param.getValue() != null)
parameter.put(param.getName(), param.getValue());
}
感谢您的答复有对我来说是多了一个问题URLEncodedUtils也不赞成:( –
您可以使用android.net.Uri。
Uri uri=Uri.parse(url);
它具有getQueryParameterNames()和uri.getQueryParameter(parameterNameString);
谢谢你的回答:) –
不客气! –
已经回答了,但这里的方法写出来
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;
}
尝试:
Uri uri = Uri.parse(yourStrUrl);
String paramValue = uri.getQueryParameter("yourParam");
谢谢您的回答 –