Как зарегистрировать ответ в Spring RestTemplate?
Я использую RestTemplate для вызова веб-службы.
String userId = restTemplate.getForObject(createUserUrl, String.class);
Если это не возвращает идентификатор пользователя, я просто получаю null, но я не знаю почему. Как вывести фактический ответ XML в журнал?
Ответы
Ответ 1
В зависимости от того, какой метод подключения HTTP вы используете, вы можете посмотреть, как вести регистрацию в действительных классах HTTP-соединения.
Например, если вы используете общие ресурсы HttpClient, вы можете установить
log4j.logger.httpclient.wire=DEBUG
Проект commons-httpclient имеет всю страницу в документации по их правилам ведения журналов.
Ответ 2
Настройте свой журнал следующим образом:
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">
...
Ответ 3
Вы можете использовать spring-rest-template-logger для регистрации HTTP-трафика RestTemplate
.
Добавьте зависимость в ваш проект Maven:
<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()
Теперь весь HTTP-трафик RestTemplate будет регистрироваться в org.hobsoft.spring.resttemplatelogger.LoggingCustomizer
на уровне отладки.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я написал эту библиотеку.
Ответ 4
вам не нужно писать ни одной строки кода, вам просто нужно добавить следующее свойство в файл application.properties
logging.level.org.springframework.web.client.RestTemplate=DEBUG
используя это, он будет регистрировать тело запроса вызова шаблона остатка, заголовок запроса, URL запроса и тело ответа также в режиме отладки.