【发布时间】:2019-08-11 00:23:38
【问题描述】:
当响应是错误的responseType 时,使用restTemplate.exchange(uri, method, entity, responseType) 进行REST 调用失败并返回RestClientException。例如,
org.springframework.web.client.RestClientException: Error while extracting response for type [java.util.List<java.lang.Byte>] and content type [application/json;charset=UTF-8];
nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Numeric value (281759) out of range of Java byte
由于这不是RestClientResponseException,我们似乎无法访问响应数据,例如状态代码和正文(即使是原始形式)。
有没有办法从原始(不可解析的)响应中获取(原始)数据? (用于记录)
【问题讨论】:
-
嗨,您是否尝试过
getRawStatusCode()和getResponseBodyAsString()在 spring 文档中提到的 here, -
这些是
RestClientResponseException的方法,但它们在RestClientException中不可用。 -
哦,请看,因为这不是
RestClientResponseException。因此,您正在寻找来自上游服务器的原始响应(至少),尽管restTemplate由于 n 个原因而无法解析,但就像您提到的那样。
标签: spring exception response resttemplate