无法解析具有#。
的网址的查询字符串参数http://www.example.com/txn/#/user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user
URLEncodedUtils.parse返回零结果。
即使URL.getQuery()也给出了null。
任何解析它的方法都是明确地从网址中删除#。
答案 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.parse
。 parse
不适用于整个网址。