Java springrest模板垃圾错误响应主体
我有以下rest模板配置:Java springrest模板垃圾错误响应主体,java,spring,rest,character-encoding,resttemplate,Java,Spring,Rest,Character Encoding,Resttemplate,我有以下rest模板配置: @Bean public RestTemplate restTemplate() { RestTemplate template = new RestTemplate(); template.getMessageConverters().add(new ObjectToUrlEncodedConverter()); return template; } objectTourenCodedConverter按原样从 我调用rest API,如下
@Bean
public RestTemplate restTemplate() {
RestTemplate template = new RestTemplate();
template.getMessageConverters().add(new ObjectToUrlEncodedConverter());
return template;
}
objectTourenCodedConverter
按原样从
我调用rest API,如下所述:
try {
response = template.exchange(uri, httpRequestObject.getMethod(), requestEntity, httpRequestObject.getResponseClass());
responseObject.setHeaders(response.getHeaders().toSingleValueMap());
responseObject.setHttpStatus(response.getStatusCode());
responseObject.setResponseBody(response.getBody());
} catch (HttpStatusCodeException ex) {
log.error("Non OK response received from server. Status code: {}, response: {}", ex.getStatusCode(), ex.getResponseBodyAsString());
throw ex;
}
我面临的问题是,当响应是4xx或5xx系列时,响应体ex.getResponseBodyAsString()
会给出垃圾值。类似这样:�0E%6�1.�Y������惠普��N��\]8.���W���+Q��\�:s�Ȕ�������뚈M�'Z��代码>�毫升�)�@��]B͎�L؏4ĞV�`�v�Qx�Fć��]s���+Е=��!�x9��)Ԏ��n%������
我已尝试将字符集设置为“UTF-8”,同时获得如下所示的errorResponseBody
ex.getResponseBodyAsString(Charset.forName("UTF-8"))
另外,从responseBodyByteArray构建字符串,如下所示:
new String(ex.getResponseBodyAsByteArray())
但还是没有运气
同样的终点在邮递员身上也很有效。Rest模板似乎以某种方式弄乱了错误响应主体。我不确定问题到底出在哪里。我将rest模板配置为使用ApacheHTTP客户端,而不是rest模板使用的默认HttpUrlConnection
这似乎工作得很好,并修复了垃圾错误响应体问题
帮助我们做同样的事情