在Android上解析查询字符串
Java EE具有ServletRequest.getParameterValues()。
在非EE平台上,URL.getQuery()仅返回一个字符串。
当不在 Java EE上时,正常解析URL中的查询字符串的正常方法是什么?
< rant >
尝试创建自己的解析器的答案很流行。这是一个非常有趣且令人兴奋的微编码项目,但我不能说这是一个好主意 :(
以下代码片段通常有缺陷或损坏,顺便说一句。打破它们对于读者来说是一个有趣的练习。 并向黑客攻击使用它们的网站。
解析查询字符串是一个定义明确的问题,但阅读规范和理解细微差别并非易事。最好让一些平台库编码器为您完成工作,并进行修复!
< / rant >
回答:
由于Android M
,事情变得更加复杂。android.net.URI .getQueryParameter()
的答案有一个错误,该错误在JellyBean
之前打乱了空格。 阿帕奇URLEncodedUtils.parse()
工作,但以L弃用,并以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
以上是 在Android上解析查询字符串 的全部内容, 来源链接: utcz.com/qa/414534.html