使用Spring的RestTemplate对端点进行POST或GET调用没有问题。我还将消息转换器设置为JSON(MappingJacksonHttpMessageConverter),没有概率。
我的问题是,如何获取我发送的已转换请求?
示例,如果我这样做:
ResponseEntity<T> result = this.restTemplate.postForEntity("http://{endpoint_url...}", dtoEntryObj, SomeDTO.class);
我如何获取它发送到端点的JSON?
答案 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}}。如果上述解决方案不适合您,您可以模拟它。