在GET / POST / PUT调用后,如何从RestTemplate获得转换后的请求?

时间:2013-11-26 19:34:00

标签: java json spring rest resttemplate

使用Spring的RestTemplate对端点进行POST或GET调用没有问题。我还将消息转换器设置为JSON(MappingJacksonHttpMessageConverter),没有概率。

我的问题是,如何获取我发送的已转换请求?

示例,如果我这样做:

ResponseEntity<T> result = this.restTemplate.postForEntity("http://{endpoint_url...}", dtoEntryObj, SomeDTO.class);

我如何获取它发送到端点的JSON?

1 个答案:

答案 0 :(得分:0)

RestTemplate也可以发送除json之外的格式。要获取请求的实际正文,您需要实现自己的ClientHttpRequestInterceptor并使用RestTemplate#setInterceptors()进行注册。

这样的东西
RestTemplate template = new RestTemplate();
ClientHttpRequestInterceptor interceptor = new ClientHttpRequestInterceptor() {

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body,
            ClientHttpRequestExecution execution) throws IOException {
        // you have access to the body
        // do something with it
        return execution.execute(request, body);
    }
};
template.setInterceptors(Arrays.asList(interceptor));

请注意,对于json,RestTemplate使用内部使用MappingJackson2MessageConverter的{​​{1}}。如果上述解决方案不适合您,您可以模拟它。