【发布时间】:2021-08-31 10:18:33
【问题描述】:
我有带有控制器和一个端点的 Spring Boot 服务器:
@GetMapping(path = "/readProperty", produces = "application/json")
public ResponseEntity<ReferenceDataRestResponse> getReferenceDatav4
(WebRequest request) {
Map<String, String[]> parametersMap = new HashMap<>(request.getParameterMap());
....
}
另一个 Spring Boot 应用程序使用 restTemplate.getForEntity 发送请求
String url = UriComponentsBuilder
.fromHttpUrl(this.referenceDataBaseUrl)
.path(this.referenceDataReadProperty)
.queryParams(new LinkedMultiValueMap(multiValueParams))
.toUriString();
log.info("Reference data URL {}", url);
ResponseEntity<String> responseEntity = this.refDataRestTemplate.getForEntity(url, String.class);
带有 url 的信息日志打印:
Reference data URL http://some-name:8080/readProperty?channel=E&service_name=Some%20Value
问题是当我使用 curl 命令和 restTemplate.getForEntity 调用此端点时,我在控制器中收到不同的 service_name 参数值
1.卷曲
当我从日志中复制这个 url 并使用 curl 命令调用它时:
curl 'http://some-name:8080/readProperty?channel=E&service_name=Some%20Value'
我的端点正在接收 service_name 参数
一些价值
2。使用 restTemplate.getForEntity(...) 进行 Java 调用
当java调用这个url时:
ResponseEntity<String> responseEntity = this.refDataRestTemplate.getForEntity(url, String.class, new Object[0]);
我的端点正在接收 service_name 参数
一些%20值
3.问题
我应该如何使用 Spring Boot 准备请求以接收控制器解码参数?
【问题讨论】:
标签: java spring spring-boot resttemplate