![](/img/trans.png)
[英]Return an error response body for method not found - spring rest webservice
[英]Spring rest template garbage error response body
我有以下休息模板配置:
@Bean
public RestTemplate restTemplate() {
RestTemplate template = new RestTemplate();
template.getMessageConverters().add(new ObjectToUrlEncodedConverter());
return template;
}
ObjectToUrlEncodedConverter
是從這個答案中按原樣復制的
我調用了下面提到的其余 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 hP N \\]8 w +Q \\ :S Ȕ 뚈M 'Z
ml ) @ ]B͎ L؏4Ğ V ` V Qx F<{Q /fZ S 3RNy >ć ]S +Е= ! x9 ) n%
我嘗試將Charset
設置為“UTF-8”,同時獲得如下所示的 errorResponseBody。
ex.getResponseBodyAsString(Charset.forName("UTF-8"))
此外,從 responseBodyByteArray 構建字符串如下:
new String(ex.getResponseBodyAsByteArray())
但仍然沒有運氣。
相同的端點在 Postman 中運行良好。 休息模板似乎以某種方式弄亂了錯誤響應正文。
我不確定到底是什么問題。 我將rest模板配置為使用apache Http客戶端,而不是rest模板使用的默認HttpUrlConnection。
這似乎運行良好並修復了垃圾錯誤響應正文問題。
本教程幫助我們做同樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.