2013-11-26 59 views
0

我沒有使用Spring的RestTemplate對端點進行POST或GET調用的問題。我也設置消息轉換器爲JSON(MappingJacksonHttpMessageConverter),沒有問題。GET/POST/PUT調用後,如何從RestTemplate獲取轉換後的請求?

我的問題是,我怎麼能抓住我發送的轉換後的請求?

例如,如果我這樣做:

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

我怎麼能搶它發送到端點的JSON?

+0

難道它不在dtoEntryObj中嗎? – crownjewel82

+0

不,因爲那是我傳入的源對象。您可以假裝它是一個Map或List,或其他任何東西。自設置我的消息轉換器後,RestTemplate自動轉換它。 –

回答

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內部使用的ObjectMapper。如果上述解決方案對您無效,您可以模擬它。

相關問題