我正在使用 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连接类中打开日志记录。
例如,如果您正在使用commons 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才能查看日志语句。否则,上述日志配置将不会显示响应。
<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">
...
RestTemplate
的 HTTP 流量。<dependency>
<groupId>org.hobsoft.spring</groupId>
<artifactId>spring-rest-template-logger</artifactId>
<version>2.0.0</version>
</dependency>
RestTemplate
:RestTemplate restTemplate = new RestTemplateBuilder()
.customizers(new LoggingCustomizer())
.build()
请确保在 application.properties
中启用了调试日志记录:
logging.level.org.hobsoft.spring.resttemplatelogger.LoggingCustomizer = DEBUG
org.hobsoft.spring.resttemplatelogger.LoggingCustomizer
中。
免责声明:我编写了这个库。
final RestTemplate restTemplate = restTemplateBuilder
.requestFactory(() -> new HttpComponentsClientHttpRequestFactory())
.build();
public class ManagedHttpClientConnectionFactory
...
private final Log log = LogFactory.getLog(DefaultManagedHttpClientConnection.class);
private final Log headerLog = LogFactory.getLog("org.apache.http.headers");
private final Log wireLog = LogFactory.getLog("org.apache.http.wire");
org.apache.http.headers
和org.apache.http.wire
定义为DEBUG级别!你不需要编写任何代码,只需在application.properties文件中添加以下属性
logging.level.org.springframework.web.client.RestTemplate=DEBUG