Как мне зарегистрировать ответ в Spring RestTemplate? - PullRequest
14 голосов
/ 08 октября 2010

Я использую RestTemplate для звонков в веб-службу.

String userId = restTemplate.getForObject(createUserUrl, String.class);

Если не удается вернуть идентификатор пользователя, я просто получаю нулевое значение, но я не знаю почему.Как вывести фактический XML-ответ в журнал?

Ответы [ 4 ]

11 голосов
/ 08 октября 2010

В зависимости от того, какой метод создания HTTP-соединения вы используете, вы можете посмотреть, как включить ведение журнала в реальных классах HTTP-соединений.

Например, если вы используете общий доступ HttpClient, вы можете установить

log4j.logger.httpclient.wire=DEBUG

Проект commons-httpclient имеет всю страницу в документации по их методам ведения журналов .

9 голосов
/ 08 октября 2010

Сконфигурируйте свою регистрацию следующим образом:

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), поэтому вам может потребоваться переключиться на jcarta 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">
...
3 голосов
/ 01 ноября 2017

Вы можете использовать spring-rest-template-logger для регистрации RestTemplate HTTP-трафика.

Добавить зависимость к вашему проекту 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 на уровне отладки.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я написал эту библиотеку.

0 голосов
/ 06 мая 2019

вам не нужно писать ни одной строки кода, вам просто нужно добавить следующее свойство в файл application.properties

logging.level.org.springframework.web.client.RestTemplate=DEBUG

с помощью этого он будет регистрировать тело запроса вызова остальных шаблонов, заголовок запроса, URL запроса и тело ответа также в режиме отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...