簡體   English   中英

Spring rest 模板垃圾錯誤響應體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM