---- июль 2019 года ----
(используя Spring Boot)
Я был удивлен, что Spring Boot, со всей его магией Zero Configuration, не предоставляет простой способ проверки или записи простого тела ответа JSON с RestTemplate. Я просмотрел различные ответы и комментарии, представленные здесь, и делюсь своей собственной дистиллированной версией того, что (все еще) работает, и мне кажется разумным решением, учитывая текущие параметры (я использую Spring Boot 2.1.6 с Gradle 4.4 )
1. Использование Fiddler в качестве http-прокси
На самом деле это довольно элегантное решение, так как оно обходит все громоздкие усилия по созданию собственного перехватчика или замене базового http-клиента на apache (см. Ниже).
Установите и запустите Fiddler
а потом
добавить -DproxySet=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
в ваши параметры виртуальной машины
2. Использование Apache HttpClient
Добавьте Apache HttpClient в зависимости от Maven или Gradle.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
Используйте HttpComponentsClientHttpRequestFactory
как RequestFactory для RestTemplate. Самый простой способ сделать это будет:
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
Включите DEBUG в свой application.properties
файл (если вы используете Spring Boot)
logging.level.org.apache.http=DEBUG
Если вы используете Spring Boot, вам нужно убедиться, что у вас настроена среда ведения журналов, например, с помощью зависимости spring-boot-starter, которая включает spring-boot-starter-logging
.
3. Используйте перехватчик
Я позволю вам прочитать предложения, встречные предложения и ошибки в других ответах и комментариях и решить для себя, хотите ли вы пойти по этому пути.
4. Записать URL и статус ответа без тела
Хотя это не отвечает заявленным требованиям регистрации тела, это быстрый и простой способ начать регистрацию ваших вызовов REST. Он отображает полный URL-адрес и статус ответа.
Просто добавьте следующую строку в ваш application.properties
файл (при условии, что вы используете Spring Boot, и если вы используете зависимость для начальной загрузки Spring, которая включает в себя spring-boot-starter-logging
)
logging.level.org.springframework.web.client.RestTemplate = ОТЛАДКА
Вывод будет выглядеть примерно так:
2019-07-29 11:53:50.265 DEBUG o.s.web.client.RestTemplate : HTTP GET http://www.myrestservice.com/Endpoint?myQueryParam=myValue
2019-07-29 11:53:50.276 DEBUG o.s.web.client.RestTemplate : Accept=[application/json]
2019-07-29 11:53:50.584 DEBUG o.s.web.client.RestTemplate : Response 200 OK
2019-07-29 11:53:50.585 DEBUG o.s.web.client.RestTemplate : Reading to [org.mynamespace.MyJsonModelClass]