2013-05-15 71 views
7

我的resttemplate.exchange()在POST請求失敗,服務器返回500錯誤。RestTemplate日誌POST數據

我試圖將根日誌級別設置爲DEBUG,但在返回500錯誤之前沒有記錄任何內容。以確保我的日誌記錄配置是正確的,我添加了一行的resttemplate呼叫

HttpClient client = new DefaultHttpClient(); 
client.execute(new HttpGet("http://google.com")); 

在這種情況下,之前確實有很多日誌消息的出現。

那麼我該如何讓RestTemplate導出調試數據呢?

感謝 楊

回答

10

從您的分析看來,你希望RestTemplate使用Apache的HttpClient。

但是,默認情況下,Spring RestTemplate不使用Apache HttpClient,而是通過SimpleClientHttpRequestFactory使用JDK工具(java.net.URL#openConnection()等)。

org.springframework.http.client.support.HttpAccessor聲明:

private ClientHttpRequestFactory requestFactory = new 
SimpleClientHttpRequestFactory(); 

據我所知,這個客戶端不支持登錄請求/響應。

要改變RestTemplate使用HttpClient的,試試這個:然後

new RestTemplate(new HttpComponentsClientHttpRequestFactory()); 

日誌記錄配置應該在完整請求/響應debug級別啓用org.apache.http.wire類別被記錄。

+0

不知道這是否依賴於版本,但爲我org.apache.http.wire設置調試不適用於Spring RestTemplate。 – IcedDante

+0

添加org.springframework.http = DEBUG適合我 –