我收到一个重定向URI作为一个字符串,它是这样的东西-http://example.com/#/login
。
它也可以是任意的URI字符串,比如http://example.com/#/login?param1=hi
或此-http://example.com
我必须原样使用那个URI并添加一些查询参数。
我像这样构造URI。
UriComponentsBuilder.fromUri("http://example.com/#/login")
.queryParam("param1", "hi")
.build();
但当我构建时,输出如下所示:http://example.com?param1=hi#/login
而不是预期的结果是这样的http://example.com/#/login?param1=hi
我怎样才能确保我收到的重定向URI被正确解析,并且在末尾添加了查询参数?
2条答案
按热度按时间vhmi4jdf1#
散列之后的所有内容都被称为“片段”。URI语法(在RFC 3986中定义)将查询参数放在片段之前。
因此,
UriComponentsBuilder
根据规范执行了正确的操作。看起来您的系统有自己的方法使用片段在片段中提供 pseudo 查询参数,不幸的是,如果您想这样做,您将不得不自己管理(和编码)这样的“参数”,然后适当地设置片段。
你可以使用一个 second UriComponentsBuilder来管理你想在片段中结束的路径和参数,然后
build()
那个,提取你想要的部分,并把它们放在片段中。(未测试的代码,但希望能给您一些启发。)
tyu7yeag2#
这是实现它的方法,因为路径将按原样读取,