如何在Spring RestTemplate中记录响应?
我正在使用 RestTemplate 对 Web 服务进行调用。
String userId = restTemplate.getForObject(createUserUrl, String.class);
如果这无法返回用户ID,我只会返回null,但我不知道为什么。如何将实际的 XML 响应输出到日志?
我正在使用 RestTemplate 对 Web 服务进行调用。
String userId = restTemplate.getForObject(createUserUrl, String.class);
如果这无法返回用户ID,我只会返回null,但我不知道为什么。如何将实际的 XML 响应输出到日志?
根据所使用的建立 HTTP 连接的方法,您可以查看在实际的 HTTP 连接类中打开日志记录。
例如,如果您使用的是共享资源HttpClient,则可以设置
log4j.logger.httpclient.wire=DEBUG
commons-httpclient项目在文档中有一整页关于他们的日志记录实践。
按如下方式配置日志记录:
log4j.logger.org.springframework.web.client=DEBUG
然后使用curl命令查看输出,例如
curl -H 'Accept: application/xml' -H 'Content-Type: application/xml' http://localhost:8080/ser/data
默认情况下,restTemplate 使用 HttpURlConnection(通过 SimpleClientHttpRequest),因此您可能需要切换到 jakarta httpclient 才能看到 log 语句。否则,上述日志配置将显示响应
<bean id="httpClientFactory" class="org.springframework.http.client.CommonsClientHttpRequestFactory">
<constructor-arg><bean class="org.apache.commons.httpclient.HttpClient"/></constructor-arg>
</bean>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg ref="httpClientFactory"/>
<property name="messageConverters">
...