Sat*_*dev 3 java rest jax-rs uribuilder
我有这样的URI:
java.net.URI location = UriBuilder.fromPath("../#/Login").queryParam("token", token).build();
我发送它作为回应: return Response.seeOther(location).build()
但是,在上面的URI中,#正在编码%23/.如何在不对哈希进行编码的情况下创建URI #.根据官方文件,fragment()必须使用一种方法来保持未编码.
URI的大多数组件都允许使用URI模板,但它们的值仅限于特定组件.例如
.UriBuilder.fromPath( "{ARG1}")建立( "富#栏"); 将导致'#'的编码,使得结果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
使用片段构造URI
UriBuilder.fromPath("http://localhost:7070/RTH_Sample14/").fragment("Login").build()
Run Code Online (Sandbox Code Playgroud)
这会产生URI字符串
http://localhost:7070/RTH_Sample14/#Login
Run Code Online (Sandbox Code Playgroud)
但是,如果您还添加查询参数
UriBuilder.fromPath("http://localhost:7070/RTH_Sample14/").fragment("Login")
.queryParam("token", "t").build()
Run Code Online (Sandbox Code Playgroud)
然后UriBuilder始终在片段之前插入查询参数:
http://localhost:7070/RTH_Sample14/?token=t#Login
Run Code Online (Sandbox Code Playgroud)
它只是符合URL语法.
| 归档时间: |
|
| 查看次数: |
7356 次 |
| 最近记录: |