Spring 用UricomponentsBuilder替换弹簧中%20的空间
我有一个方法,它接受一些参数并从中形成一个URI,以便访问我们的客户机REST服务。其中一个参数可能是一个空格。问题是UriComponentsBuilder.pathSegment忽略了空间。所以,让我们说,Spring 用UricomponentsBuilder替换弹簧中%20的空间,spring,spring-boot,Spring,Spring Boot,我有一个方法,它接受一些参数并从中形成一个URI,以便访问我们的客户机REST服务。其中一个参数可能是一个空格。问题是UriComponentsBuilder.pathSegment忽略了空间。所以,让我们说,'v1','v2'。。。将形成URI../v1/v2,而不是/v1/%20/v2。如果我将%20直接传递给pathSegment,它将替换为%2520。这是我的职责 private String getJsonStringFromDetranRestParams(String url,
'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