首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编码URI参数值?

如何编码URI参数值?
EN

Stack Overflow用户
提问于 2009-01-14 18:21:24
回答 7查看 127.6K关注 0票数 57

我想发送一个URI作为查询/矩阵参数的值。在将其附加到现有URI之前,我需要根据RFC2396对其进行编码。例如,给定输入:

http://google.com/resource?key=value1 & value2

我希望得到以下输出:

http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2

无论是java.net.URLEncoder还是java.net.URI都不会生成正确的输出。URLEncoder用于HTML表单编码,这与RFC2396不同。URI没有一次编码单个值的机制,因此它无法知道value1和value2是同一个键的一部分。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-01-14 20:39:17

泽西的UriBuilder根据需要使用应用程序/x-www-form-urlencoded和RFC3986对URI组件进行编码。根据Javadoc

生成器方法按照应用程序/x-www-form-urlencoded媒体类型(对于查询参数)和RFC3986(对于所有其他组件)的规则对相应URI组件中不允许的字符执行上下文编码。注意,只有在特定组件中不允许的字符受到编码,因此,例如,提供给路径方法之一的路径可以包含矩阵参数或多个路径段,因为分隔符是合法字符,并且不会被编码。在允许的情况下,也可以识别百分比编码值,并且不会进行双重编码。

票数 31
EN

Stack Overflow用户

发布于 2011-07-16 11:48:28

您还可以使用Spring的UriUtils

票数 20
EN

Stack Overflow用户

发布于 2009-12-31 06:05:49

我没有足够的名气来评论答案,但我只想指出,下载JSR-311API本身是行不通的。您需要下载参考实现(jersey)。

当api试图在运行时查找实现时,只有从JSR页面下载api才会给出一个ClassNotFoundException。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/444112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档