I wrote a method that should return valid body as string type in utf-8, but after making a request I get the response in utf-16. The content-type header in postman is application/json. I searched the stackoverflow for any possible way to resolve it, but any solution doesn't helped me, including this topic(. How I can change it to get valid body? Thanx!
Headers, that i've got on response:
{Date=[Mon, 13 Apr 2020 19:13:38 GMT], Content-Type=[application/json; charset=utf-16], Server=[Kestrel], Transfer-Encoding=[chunked]}
@PostMapping("/updateValues")
public String getUpdateValuesRequest(@RequestParam(value = "secret") String secret,
@RequestHeader HttpHeaders requestHeaders,
@RequestBody String requestBody){
return getUpdateValuesResponse(secret, requestHeaders, requestBody);
}
public String getUpdateValuesResponse(String secret, HttpHeaders requestHeaders, String requestBody) {
String updateValuesUrl = "http://myservice.com/chunk/updateValues?secret={secret}";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
HttpEntity<String> entity = new HttpEntity<String>(requestBody, requestHeaders);
ResponseEntity<String> response = restTemplate.exchange(updateValuesUrl, HttpMethod.POST, entity, String.class, secret);
if (response.getStatusCode() == HttpStatus.OK) {
logger.info("Request Successful.");
} else {
logger.info("Request Failed");
}
logger.info(response.getHeaders().toString());
logger.info(response.getStatusCode().toString());
logger.info("StatusCodeValue: " + response.getStatusCodeValue());
logger.info(response.getBody());
logger.info(response.getClass().toString());
return response.getBody();
}