如何让UriBuilder构建一个带解码哈希字符的URI?

时间:2014-03-31 16:31:30

标签: java java-ee jersey

我尝试生成以下uri

//主机:端口/名称/#/名称/名称

使用jersey URI Builder。问题是uri构建器解码哈希字符。

有人如何构建给定的URI?

这就是我所拥有的:

final URI build = uriInfo.getBaseUriBuilder().path("..").path("#").path("/clients/asd/").build();

2 个答案:

答案 0 :(得分:3)

#不是URI路径中的有效字符; #及其后面的内容实际上是URI 片段

因此,您需要做的是:

final URI build = uriInfo.getBaseUriBuilder().path("..")
    .fragment("/clients/asd/").build();

(注意:我实际上不使用Jersey;我查找了javadoc here,因为我认为这是相同的)

答案 1 :(得分:1)

对我而言,这是有效的:

final URI build = UriBuilder.fromUri("{arg1}").fragment("{arg2}").buildFromEncoded("../","/clients/asd/");

使用.path("..").fragment("/clients/asd/").build()会生成

  

..#%2Fclients%2Fasd