我有自己的ClientHttpRequestInterceptor
实现。在调用intercept
之后的ClientHttpResponse response = execution.execute(request, body)
方法中,我要处理响应,
但是发生任何错误或超时时,变量response
为null
。
但是,稍后当我遇到restTemplate
异常时,我可以读取一些有关响应的信息,例如状态码,甚至是一些错误消息。
是否可以在ClientHttpRequestInterceptor
或任何其他拦截器中获取该信息?
答案 0 :(得分:0)
是的。如果我理解正确,您将自己的ClientHttpRequestInterceptor
用于RestTemplate
吗?如果是,只需添加自己的ResponseErrorHandler
实现即可:
...
var restTemplate = new RestTemplate();
restTemplate.setInterceptors(List.of(new OwnClientHttpRequestInterceptor()));
restTemplate.setErrorHandler(new OwnResponseErrorHandler());
...
在这种情况下,您可以在拦截器(例如set标头)中对请求进行一些覆盖操作(通常用于请求,因为响应可能是不确定的),并且有两种方法来处理响应:基本代码或错误处理程序中引发错误时的响应。