gpt4 book ai didi

spring - 用 UriComponentsBuilder 替换 Spring 中 %20 的空间

转载 作者:行者123 更新时间:2023-12-01 16:36:24 24 4
gpt4 key购买 nike

我有一个方法,它接受一些参数并从中形成一个 URI,以便访问我们的客户端 REST 服务。这些参数之一可能出现空格。问题是 UriComponentsBuilder.pathSegment 忽略了空间。因此,假设 'v1', ' ', 'v2'... 将形成 URI .../v1/v2 而不是 /v1/%20/v2。如果我将 %20 直接传递给 pathSegment,它将替换为 %2520。这是我的功能

 private String getJsonStringFromDetranRestParams(String url, String... params) {

URI targetUrl = UriComponentsBuilder.fromUriString(url).pathSegment(params).build().encode().toUri();
String json = restTemplate.getForObject(targetUrl, String.class);

return json;
}

函数是否有任何类型的“转义字符”,以便它将 %20 视为有效字符串而不是特殊字符串。我正在寻找一个 \\ Java 等价物。

最佳答案

只需使用 build() 将其作为字符串返回,pathSegment 中的空格将被忽略,您必须传递 %20

String targetUrl = UriComponentsBuilder.fromUriString("http://localhost:8080").pathSegment("v1","%20","v2").build().toUriString();
System.out.println(targetUrl); //http://localhost:8080/v1/%20/v2

或者使用build(true)进行编码

 URI targetUrl = UriComponentsBuilder.fromUriString("http://localhost:8080").pathSegment("v1","%20","v2").build(true).toUri();
System.out.println(targetUrl); ////http://localhost:8080/v1/%20/v2

关于spring - 用 UriComponentsBuilder 替换 Spring 中 %20 的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48008656/

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