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;
    }

参考资料

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容