猿问

在Android上解析查询字符串

在Android上解析查询字符串

JavaEEServletRequest.getParameterValue().

在非EE平台上,URL.getQuery()只返回一个字符串。

在URL中正确解析查询字符串的正常方法是什么?在Java EE上?


<咆哮>

在答案中,尝试并创建自己的解析器是很流行的。这是非常有趣和令人兴奋的微编码项目,但是我不能说这是个好主意 :(

下面的代码片段通常是有缺陷或坏的,顺便说一句。对读者来说,破解它们是一项有趣的练习。还有黑客攻击使用它们的网站.

解析查询字符串是一个定义良好的问题,但是读取规范和理解细微差别并不容易。让一些平台库程序员为您做艰苦的工作,做好修复工作,这要好得多!

</咆哮>


眼眸繁星
浏览 669回答 3
3回答

尚方宝剑之说

这是BalusC的回答,但是它编译并返回结果:public&nbsp;static&nbsp;Map<String,&nbsp;List<String>>&nbsp;getUrlParameters(String&nbsp;url) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;UnsupportedEncodingException&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;List<String>>&nbsp;params&nbsp;=&nbsp;new&nbsp;HashMap<String,&nbsp;List<String>>(); &nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;urlParts&nbsp;=&nbsp;url.split("\\?"); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(urlParts.length&nbsp;>&nbsp;1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;query&nbsp;=&nbsp;urlParts[1]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;param&nbsp;:&nbsp;query.split("&"))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;pair[]&nbsp;=&nbsp;param.split("="); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;key&nbsp;=&nbsp;URLDecoder.decode(pair[0],&nbsp;"UTF-8"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value&nbsp;=&nbsp;""; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(pair.length&nbsp;>&nbsp;1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;URLDecoder.decode(pair[1],&nbsp;"UTF-8"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<String>&nbsp;values&nbsp;=&nbsp;params.get(key); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(values&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;=&nbsp;new&nbsp;ArrayList<String>(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params.put(key,&nbsp;values); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values.add(value); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;params;}
随时随地看视频慕课网APP

相关分类

Java
Android
我要回答