【问题标题】:How to let UriBuilder build an URI with decoded hash character?如何让 UriBuilder 使用解码的哈希字符构建 URI?
【发布时间】:2014-03-31 16:31:30
【问题描述】:

我尝试生成以下 uri

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

使用球衣 URI 生成器。问题是 uri 构建器解码了哈希字符。

有人如何构建给定的 URI 吗?

这就是我所拥有的:

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

【问题讨论】:

  • 你可以试试.path(URLEncoder.encode("#"))
  • @Alden 1. URLEncoder.encode() 不适用于 URI; 2. OP实际上想要一个URI片段,而不是转义井号

标签: java jakarta-ee jersey


【解决方案1】:

# 不是 URI 路径中的有效字符; # 后面的实际上是一个 URI fragment

因此,您需要做的是:

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

(注意:实际上,我没有使用 Jersey;我查了 javadoc here,因为我想这是一样的)

【讨论】:

    【解决方案2】:

    对我来说,这是有效的:

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

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

    ..#%2Fclients%2Fasd

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2012-08-23
      相关资源
      最近更新 更多