自定义ClientHttpRequestInterceptor空响应

时间:2019-11-28 09:19:59

标签: spring spring-boot resttemplate

我有自己的ClientHttpRequestInterceptor实现。在调用intercept之后的ClientHttpResponse response = execution.execute(request, body)方法中,我要处理响应, 但是发生任何错误或超时时,变量responsenull

但是,稍后当我遇到restTemplate异常时,我可以读取一些有关响应的信息,例如状态码,甚至是一些错误消息。

是否可以在ClientHttpRequestInterceptor或任何其他拦截器中获取该信息?

1 个答案:

答案 0 :(得分:0)

是的。如果我理解正确,您将自己的ClientHttpRequestInterceptor用于RestTemplate吗?如果是,只需添加自己的ResponseErrorHandler实现即可:

...
var restTemplate = new RestTemplate();
restTemplate.setInterceptors(List.of(new OwnClientHttpRequestInterceptor()));
restTemplate.setErrorHandler(new OwnResponseErrorHandler());
...

在这种情况下,您可以在拦截器(例如set标头)中对请求进行一些覆盖操作(通常用于请求,因为响应可能是不确定的),并且有两种方法来处理响应:基本代码或错误处理程序中引发错误时的响应。