springboot RestTemplate打印http信息

我们在使用RestTemplate的时候,往往需要打印http的请求信息,我这里采用ClientHttpRequestInterceptor拦截requestresponse的方式,具体看以前的文章
RestTemplate反序列化带泛型的返回值。

但是有一个问题是,ClientHttpResponsegetBody()返回值是一个InputStream,如果在拦截器将ClientHttpResponse的body读取了,那么需要获得返回信息的地方就得不到相应体。

解决方案是,在new RestTemplate的时候,使用BufferingClientHttpRequestFactory,具体代码如下:

    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        RestTemplate restTemplate = new RestTemplate(
                new BufferingClientHttpRequestFactory(factory));
        return restTemplate;
    }

参考资料

  • # Spring RestTemplate - how to enable full debugging/logging of requests/responses?

你可能感兴趣的:(springboot RestTemplate打印http信息)