Java EE有ServletRequest.getParameterValues()。
在非ee平台上,URL.getQuery()只是返回一个字符串。
当不在Java EE上时,正确解析URL中的查询字符串的正常方法是什么?
在回答中,尝试创建自己的解析器是很受欢迎的。这是一个非常有趣和令人兴奋的微编码项目,但我不能说这是一个好主意。
下面的代码段通常是有缺陷或损坏的。对读者来说,打破它们是一项有趣的练习。还有攻击使用它们的网站的黑客。
解析查询字符串是一个明确定义的问题,但阅读规范并理解其中的细微差别并非易事。最好是让一些平台库编码器为您做艰苦的工作,并进行修复!
在Android上,我尝试使用@diyism回答,但我遇到了@rpetrich提出的空格字符问题,例如:
我填写了一个表单,其中用户名=“us+us”和密码=“pw pw”,导致URL字符串如下:
http://somewhere?username=us%2Bus&password=pw+pw
但是,@diyism代码返回“us+us”和“pw+pw”,即它不检测空格字符。如果URL被%20重写,空格字符将被识别:
http://somewhere?username=us%2Bus&password=pw%20pw
这导致以下修复:
Uri uri = Uri.parse(url_string.replace("+", "%20"));
uri.getQueryParameter("para1");