I have spring boot server with controller and one endpoint:
@GetMapping(path = "/readProperty", produces = "application/json")
public ResponseEntity<ReferenceDataRestResponse> getReferenceDatav4
(WebRequest request) {
Map<String, String[]> parametersMap = new HashMap<>(request.getParameterMap());
....
}
And another spring boot application which is sending request with 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);
info log with url prints this:
Reference data URL http://some-name:8080/readProperty?channel=E&service_name=Some%20Value
Problem is that when I call this endpoint with curl command and with restTemplate.getForEntity I receive different values for service_name param in controller
1. Curl
When I copy this url from log and call it with curl command like this:
curl 'http://some-name:8080/readProperty?channel=E&service_name=Some%20Value'
My endpoint is receiving service_name param as
Some Value
2. Java call with restTemplate.getForEntity(...)
When java is calling this url with:
ResponseEntity<String> responseEntity = this.refDataRestTemplate.getForEntity(url, String.class, new Object[0]);
My endpoint is receiving service_name param as
Some%20Value
3. Question
How should I prepare request using spring boot to receive in controller decoded param?