spring urlencoder.encode无法正确使用加号上的restemplate

zzlelutf  于 2021-07-16  发布在  Java
关注(0)|答案(0)|浏览(217)

我在做一个spring boot项目。我想使用带有编码参数的restemplate发送一个http请求。

RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); //for logging purpose
String client_id = "ABFNrj+stZ";
String url = "https://helloworld.co/api?client_id=%1$s";
url = String.format(url, URLEncoder.encode(client_id, StandardCharsets.UTF_8));
ResponseEntity<Object> resp = restTemplate.exchange(url, HttpMethod.GET, entity, new ParameterizedTypeReference<Object>(){});

在日志中,我得到了“%252b”。resttemplate似乎将“%2b”编码为“%252b”。
但是如果我不编码客户端的id,例如,

url = String.format(url, client_id);

在日志中,我将得到“+”没有任何编码。
如何在不使用双重编码的情况下发送编码为“+”的请求。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题