---- липень 2019 ----
(використовуючи Spring Boot)
Я був здивований, що Spring Boot, з усією магією Zero Configuration, не забезпечує простий спосіб перевірити або записати простий корпус відповіді JSON з RestTemplate. Я переглянув різні відповіді та коментарі, надані тут, і ділюсь власною дистильованою версією того, що (досі) працює, і мені здається розумним рішенням, враховуючи поточні параметри (я використовую Spring Boot 2.1.6 з Gradle 4.4 )
1. Використання Fiddler як http-проксі
Це насправді досить елегантне рішення, оскільки воно обходить усі громіздкі зусилля щодо створення власного перехоплювача або зміни базового http-клієнта на апаш (див. Нижче).
Встановити та запустити Fiddler
і потім
додати -DproxySet=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
до Ваших параметрів VM
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-logging
.
3. Використовуйте перехоплювач
Я дам вам ознайомитись з пропозиціями, зустрічними пропозиціями та ґетчами в інших відповідях та коментарях та вирішити для себе, чи хочете ви піти цим шляхом.
4. Введіть URL-адресу та статус відповіді без тіла
Хоча це не відповідає заявленим вимогам реєстрації тіла, це швидкий і простий спосіб розпочати реєстрацію REST-дзвінків. Він відображає повну URL-адресу та статус відповіді.
Просто додайте у application.properties
файл наступний рядок (якщо ви використовуєте Spring Boot та припускаєте, що ви використовуєте залежність стартера весняного завантаження, яка включає spring-boot-starter-logging
)
logging.level.org.springframework.web.client.RestTemplate = DEBUG
Вихід буде виглядати приблизно так:
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]