我有一个这样的URI:
java.net.URI location = UriBuilder.fromPath("../#/Login").queryParam("token", token).build();
我将其作为回复发送:return Response.seeOther(location).build()
但是,在上面的 URI 中,#
被编码为%23/
. 如何在不编码 hash 的情况下创建 URI #
。根据官方文件,fragment()
必须使用一种方法来保持未编码。
URI 模板在 URI 的大多数组件中都是允许的,但它们的值仅限于特定组件。例如
UriBuilder.fromPath("{arg1}").build("foo#bar"); 将导致对“#”进行编码,使得生成的 URI 为“foo%23bar”。要创建 URI "foo#bar",请改用 UriBuilder.fromPath("{arg1}").fragment("{arg2}").build("foo", "bar")。
查看文档中的示例,我不确定如何在我的情况下应用它。
最终的 URI 应如下所示:
http://localhost:7070/RTH_Sample14/#Login?token=eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvcnRoLmNvbSIsInN1YiI6IlJUSCIsInJvbGUiOiJVU0VSIiwiZXhwIjoxNDU2Mzk4MTk1LCJlbWFpbCI6Imtpcml0aS5rOTk5QGdtYWlsLmNvbSJ9.H3d-8sy1N-VwP5VvFl1q3nhltA-htPI4ilKXuuLhprxMfIx2AmZZqfVRUPR_tTovDEbD8Gd1alIXQBA-qxPBcxR9VHLsGmTIWUAbxbyrtHMzlU51nzuhb7-jXQUVIcL3OLu9Gcssr2oRq9jTHWV2YO7eRfPmHHmxzdERtgtp348