无法使用#url

时间:2016-04-13 16:11:13

标签: java url urlencode

无法解析具有#。

的网址的查询字符串参数
http://www.example.com/txn/#/user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user

URLEncodedUtils.parse返回零结果。

即使URL.getQuery()也给出了null。

任何解析它的方法都是明确地从网址中删除#。

1 个答案:

答案 0 :(得分:1)

#之后的所有内容都是片段

网址就是这样构建的(来自Wikipedia):

scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

您的网址分解为(使用URL scheme 称为协议片段称为 ref ):

scheme   = http
host     = www.example.com
path     = txn/
query    = 
fragment = /user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user

此外,如果您将该网址输入网络浏览器,片段将由浏览器处理,而不会发送到服务器。

如果您真的想要#作为路径组件,则需要%编码:

http://www.example.com/txn/%23/user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user

那将分解(并解码)为:

scheme   = http
host     = www.example.com
path     = txn/#/user/399AC2F1BB3241823B5E48205C0657FC
query    = utm_source=campaign&utm_medium=testmedium&page=user
fragment = 

提取完查询后,您可以使用URLEncodedUtils.parseparse不适用于整个网址。