RestTemplate记录POST数据

时间:2013-05-15 19:33:11

标签: spring log4j resttemplate

我的resttemplate.exchange()在POST请求失败,服务器返回500错误。

我尝试将根日志记录级别设置为DEBUG,但在返回500错误之前没有记录任何内容。为了确保我的日志配置是正确的,我在resttemplate调用之前添加了一行

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

在这种情况下确实会出现很多日志消息。

那么如何让RestTemplate导出调试数据呢?

由于 杨

1 个答案:

答案 0 :(得分: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());

然后,日志记录配置应在级别org.apache.http.wire启用类别debug,以便记录完整的请求/响应。