gpt4 book ai didi

java - 如何使用 UriComponentsBuilder 对 URI 中的路径部分进行编码?

转载 作者:行者123 更新时间:2023-12-01 19:59:18 25 4
gpt4 key购买 nike

我有一个如下所示的路径:/service/method/{id}/{parameters},我使用restTemplate调用它,其中/service/method是一个微服务,{id} 是我需要询问的一些 id,{parameters} 是一个看起来像这样的链接:/home/floor/kitchen/,我稍后在服务/方法微服务中用于映射 JsonNodeTree。

我正在尝试使用

    Map<String, String> uriVariables = new HashMap<String, String>();
uriVariables.put("id", "5080572115");
uriVariables.put("parameters", "/home/floor/kitchen/");

UriComponents uriComponents = UriComponentsBuilder.newInstance().scheme("http").host("service/methods/{id}").
path("/{parameters}").buildAndExpand(uriVariables).encode();
String finalURI = uriComponents.toUriString();
return restTemplate.getForObject(finalURI, Integer.class);

但我得到的是整个链接http://service/methods/ {id}/{parameters} 编码。我需要的只是对其一部分({parameters})进行编码,这样我就可以将 url 的其他部分解析到 RestTemplate 中。再次澄清一下,我需要将 service/methods/{id} 解析为 RestTemplate,并稍后解码 {parameters} 以用作 JsonNodeTree 的路径。

编辑:我知道查询,但找不到对路径的一部分进行编码的解决方案。

最佳答案

要获取编码的路径变量,您需要使用 pathSegment(String... pathSegments) :

Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("id", "5080572115");
uriVariables.put("parameters", "/home/floor/kitchen/");

UriComponents encode = UriComponentsBuilder.newInstance()
.scheme("http")
.host("localhost")
.path("service/methods")
.pathSegment("{id}", "{parameters}")
.buildAndExpand(uriVariables)
.encode();
System.out.println(encode);

输出

http://localhost/service/methods/5080572115/%2Fhome%2Ffloor%2Fkitchen%2F

关于java - 如何使用 UriComponentsBuilder 对 URI 中的路径部分进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59014422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com