1
58
自从安卓M以来,事情变得更复杂了。答案 android.net.URI .getQueryParameter()有一个bug,它在Jellbean之前中断了空格。 Apache URLEncodedUtils.parse() 工作,但 deprecated in L 和 removed in M . 所以现在最好的答案是 UrlQuerySanitizer .这从API 1级开始就存在,并且仍然存在。它还让您思考一些棘手的问题,比如如何处理特殊字符或重复值。 最简单的代码是
|
2
199
安卓:
|
3
64
|
4
25
这里是 BalusC's answer ,但它编译并返回结果:
|
5
21
如果类路径上有jetty(服务器或客户机)libs,则可以使用jetty util类(请参见 javadoc ),例如:
|
6
13
如果您使用的是Spring3.1或更高版本(Yikes,希望支持能再进一步),您可以使用
|
7
5
对于servlet或JSP页面,可以使用request.getParameter(“paramname”)获取queryString键/值对。
还有其他的方法可以做到这一点,但我在创建的所有servlet和jsp页面中都是这样做的。 |
8
4
解析查询字符串要比看起来复杂一些,这取决于您希望得到的宽容程度。 首先,查询字符串是ASCII字节。您一次读取一个字节,然后将其转换为字符。如果角色是?或者&然后它指示参数名称的开头。如果字符为=则表示参数值的开始。如果字符为%,则表示编码字节的开始。这就是问题的症结所在。 当你读取一个%char时,你必须读取接下来的两个字节,并将它们解释为十六进制数字。这意味着接下来的两个字节将是0-9、a-f或a-f。将这两个十六进制数字粘合在一起以获得字节值。但请记住, 字节不是字符 . 你必须知道用什么编码来编码字符。字符_)在UTF-8中的编码与在ISO-8859-1中的编码不同。一般来说,不可能知道给定字符集使用了什么编码。我总是使用UTF-8,因为我的网站被配置为总是使用UTF-8为所有内容提供服务,但实际上你不能确定。一些用户代理会告诉您请求中的字符编码;如果您有完整的HTTP请求,您可以尝试读取它。如果你只有一个单独的网址,祝你好运。 无论如何,假设您使用的是UTF-8或其他一些多字节字符编码,既然您已经解码了一个编码的字节,那么您必须将它放在一边,直到捕获下一个字节。您需要将所有编码的字节放在一起,因为您不能一次正确地对一个字节进行URL解码。将所有的字节放在一起,然后一次对它们进行解码,以重建您的角色。
另外,如果你想宽容一点,并且考虑到用户代理会破坏URL的话,这会变得更有趣。例如,一些Webmail客户机对事物进行双重编码。还是加倍?&=字符(例如:
|
9
4
仅供参考,这是我最后得出的结论(基于urlencodedutils,并返回一张地图)。 特征:
代码:
兼容性助手(值存储在字符串数组中,就像 ServletRequest.getParameterMap() ):
|
10
4
在Android上,我尝试使用@diyism answer,但遇到了@rpetrich提出的空格字符问题,例如:
我填了一张表格
但是,@diyism代码返回
这将导致以下修复:
|
11
4
我有办法做到这一点: 1) :
2)最简单的方法是使用 Uri 班级:
这是一个如何使用以下两种方法之一的示例:
TagValue的值为
|
12
3
在Android上,可以使用的uri.parse静态方法 android.net.Uri 上课做举重。如果你对uris和intent做了什么,你无论如何都要使用它。 |
13
3
这对我有用…… 我不知道为什么每个人都在地图后,请列出> 我只需要一个简单的名称-值映射。 为了简单起见,我使用了内置的uri.getquery();
|
14
3
在Android上,其简单代码如下:
另外,如果不想注册每个预期的查询键,请使用:
打电话之前:
|
15
2
番石榴的多重地图更适合这个。下面是一个简短的清晰版本:
|
16
1
ApacheAxis2有一个独立的queryStringParser.java实现。如果您不使用axis2,只需从这里下载源代码和测试用例。- |
17
0
我觉得JRE里没有。您可以在其他包中找到类似的函数,如ApacheHTTPClient。如果你不使用其他软件包,你只需要自己写。没那么难。这是我用的,
|
18
0
基于BalusC的答案,我编写了一些Java代码:
|
19
0
|
20
0
使用apache httpcomponents并将其与一些收集代码连接,以按值访问参数: http://www.joelgerard.com/2012/09/14/parsing-query-strings-in-java-and-accessing-values-by-key/ |
21
0
使用番石榴:
|
22
0
回答这里是因为这是一个流行的话题。这是Kotlin中使用推荐的
|
23
-2
此方法获取par名称和par值的uri和返回映射
|
24
-3
你说的是“Java”,而不是“Java EE”。您的意思是使用JSP和/或servlet,而不是完整的JavaEE堆栈?如果是这样,那么您仍然可以使用request.getParameter()。 如果你的意思是你正在编写Java,但是你不是在写JSP和servlet,或者你只是用Java作为你的参考点,但是你在其他没有内置参数解析的平台上…哇,这听起来不太可能,但如果是这样,原则是:
(我可以编写Java代码,但这是毫无意义的,因为如果你有Java可用,你可以只使用请求。 |
Abhilash Das · 输入文本时,编辑文本与工具栏重叠 1 年前 |
Community wiki · 局部变量可能尚未初始化 1 年前 |
jvargas · 如何获取上个月的第一天和最后一天以及一年的第一天 1 年前 |