如何在Android中从URL获取参数?

65

我有一个类似这样的URL:

http://www.chalklit.in/post.html?chapter=V-Maths-Addition%20&%20Subtraction&post=394

如何获取章节和文章参数的值?

我的URL中在章节参数的值中包含了'&'。


如果您的参数包含空格或其他空白字符,则请使用POST方法发送数据。 - Chirag Savsani
目前在Java或Android框架中解析URI的类比较少,您尝试过什么方法了吗? - Selvin
1
Uri.parse().getQueryParameter() - Blackbelt
1
我的URL在章节参数的值中包含'&'。这会导致它无法正常工作。需要对&进行URL编码。据我所知,应该是%26或类似的内容。 - Fildor
1个回答

166

在Android中,您可以使用Uri类来实现此目的;https://developer.android.com/reference/android/net/Uri.html


Uri uri = Uri.parse("http://www.chalklit.in/post.html?chapter=V-Maths-Addition%20&%20Subtraction&post=394");
String server = uri.getAuthority();
String path = uri.getPath();
String protocol = uri.getScheme();
Set<String> args = uri.getQueryParameterNames();

然后你甚至可以这样从查询参数中获取特定的元素;

String chapter = uri.getQueryParameter("chapter");  //will return "V-Maths-Addition "

1
章节=“V-Maths-Addition” - Shubham Chauhan
我的期望输出是“V-Maths-加法和减法”。 - Shubham Chauhan
1
请注意,您需要转义/ URL 编码“&”。它不能出现在值中。您从哪里获取该网址?您是否控制其构造? - Fildor
1
看起来你的 & 没有正确编码,应该使用 %26 代替 &,否则它将被解释为参数分隔符。 - jason.kaisersmith
请注意,带有片段的URL参数(在主要部分之后带有“#”)将不会被解析。其中一种解决方法是用“?”替换“#”。 - Johnny Five

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接