当前位置: 首页 > 面试题库 >

在Android上解析查询字符串

劳仲渊
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 在此“ Hello World”示例中: 如何从查询字符串中获取参数? 他们在文档中提到: 但是我不知道如何使用它。有人可以解释吗? 问题答案: 您可以使用从方法URL模块在请求回调。 我建议您阅读HTTP模块文档,以了解回调函数。您还应该看看http://howtonode.org/之类的网站,并检查Express框架以更快地开始使用Node。

  • 问题内容: 如何将下面的 字符串 转换为 数组 ? 这是我要寻找的阵列, 问题答案: 您需要该函数,并且需要设置第二个参数以将数据放入数组中,而不是放入单个变量中。

  • 我在用Lucene。Net版本3.0。3. 下面是Lucene查询转换为字符串,带有字段键、值和容差。 我想把字符串值传递给Api,在那里我需要转换回Lucene查询。 我使用字段FirstName和LastName尝试了QueryParser和MultifieldQueryparser,但在传递时没有返回确切的查询。

  • 问题内容: 解析JSON似乎是这里讨论的一个相当普遍的话题。我环顾四周,但仍然找不到我想要的东西。这是我的HttpClient的代码 我正在使用HttpClient将JSON请求发送到服务器。然后,服务器以JSON返回响应。这很好。现在这是我遇到麻烦的地方。我从服务器接收到HttpEntity。然后,我将其变成看起来像这样的字符串。 我希望能够将此字符串发送到我的方法,并且它返回键值映射。我觉得这

  • 问题内容: 我正在尝试使用JDK java.net.URI构建URI 。 我想附加一个绝对URI对象,一个查询(在String中)。例如: 理论(或我的想法)是决心应该返回: 但是我得到的是: 为什么#resolve() “吃掉”最后一条路?如果新的URI()构建为: 效果很好。 问题答案: 我想回应一下自己。Javadoc确实可以正确解释。如URI#resolve()所述,在第3.b节中: 否则