在Android上解析查询字符串

问题:

Java EE有ServletRequest.getParameterValues()
在非EE平台上,URL.getQuery()只返回一个字符串。
在Java EE上的not时正确解析URL中的查询字符串的常规方法是什么?
 胡言乱语
在尝试自己的解析器的答案中是受欢迎的。这是非常有趣和令人兴奋的微编码项目,但 🙁
下面的代码段通常是有缺陷的或破损的,btw。打破他们是读者有趣的练习。 And to the hackers attacking the websites that use them
解析查询字符串是一个明确定义的问题,但阅读规范和理解细微差别是不平凡的。让一些平台图书馆编码器做好努力,做好修改,是更好的!
 /咆哮

回答:

由于Android M的东西已经变得更加复杂了。 android.net.URI .getQueryParameter()的答案有一个在JellyBean之前打破空格的错误。
 Apache URLEncodedUtils.parse()工作,但是deprecated in Lremoved in M
所以现在最好的答案是UrlQuerySanitizer。这自API 1级以来就存在,但仍然存在。它也使您思考棘手的问题,如处理特殊字符或重复的值。
最简单的代码是

UrlQuerySanitizer.ValueSanitizer sanitizer = UrlQuerySanitizer.getAllButNullLegal();
// remember to decide if you want the first or last parameter with the same name
// If you want the first call setPreferFirstRepeatedParameter(true);
sanitizer.parseUrl(url);
String value = sanitizer.getValue("paramname"); // get your value

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Parsing query strings on Android

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 + 2 =