java HttpClientErrorException getResponseBodyAsString()无法将字节解析为字符串
我在从第三方服务器获取403 http代码响应时遇到问题。2019年4月5日之前,我能够正确地从第三方获取响应正文,但目前我正在从getResponseBodyAsString检索一个可能无法正确转换为字符串的字节。这是包裹组织的问题吗。springframework。网状物客户
@Autowired
RestClient restClient;
try{
//Request via restTemplate
ResponseEntity<String> responseEntity = restClient.makeClientRequestJson(batch_type.getEndpoint(), HttpMethod.POST, httpHeaders, batch_payload.getRequest(), ProcessorConstants.moduleId);
} catch (HttpClientErrorException | HttpServerErrorException ex) {
loggingService.writeLogs("Error From Third Party Request, Message: " + ex.getMessage() + "| Response Body: " + ex.getResponseBodyAsString(), this.getClass(), LoggingEnum.ERROR, BatchConstants.moduleId);
...
这是makeClientRequestJson实现:
public ResponseEntity<String> makeClientRequestJson(String url, HttpMethod httpMethod, HttpHeaders headers, String jsonBody , String moduleId){
RestTemplate restTemplate = new RestTemplate();
HttpEntity<String> entity = new HttpEntity<>(jsonBody, headers);
loggingService.writeLogs("Third Party Request: " + entity.getBody() + "| url: " + url + " | method: " + httpMethod.toString(), RestClientImpl.class, LoggingEnum.INFO, moduleId);
ResponseEntity<String> response = restTemplate.exchange(url, httpMethod, entity, String.class);
loggingService.writeLogs("Third Party Response: " + response.getBody() + "| url: " + url + " | method: " + httpMethod.toString(), RestClientImpl.class, LoggingEnum.INFO, moduleId);
return response;
}
问题是,当让ex.getResponseBodyAsString()返回字节数组时,我直接从服务器获得json响应,如下所示:
{
"code": "403020",
"transactionID": "1555495478-1409322457-83999786",
"message": "Account is Level 1"
}
# 1 楼答案
更新:这是由于客户端服务器的响应头,响应上的一些奇怪的头,比如连接->;关如果有人遇到此问题,请确保首先扫描标题响应