---- Juli 2019 ----
(mit Spring Boot)
Ich war überrascht, dass Spring Boot mit all seiner Magie der Nullkonfiguration keine einfache Möglichkeit bietet, einen einfachen JSON-Antworttext mit RestTemplate zu überprüfen oder zu protokollieren. Ich habe die verschiedenen Antworten und Kommentare hier durchgesehen und teile meine eigene destillierte Version dessen, was (noch) funktioniert, und scheint mir angesichts der aktuellen Optionen eine vernünftige Lösung zu sein (ich verwende Spring Boot 2.1.6 mit Gradle 4.4 )
1. Verwenden von Fiddler als http-Proxy
Dies ist eigentlich eine ziemlich elegante Lösung, da sie alle mühsamen Anstrengungen umgeht, einen eigenen Interceptor zu erstellen oder den zugrunde liegenden http-Client in Apache zu ändern (siehe unten).
Installieren Sie Fiddler und führen Sie es aus
und dann
Hinzufügen -DproxySet=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
zu Ihren VM-Optionen
2. Verwenden von Apache HttpClient
Fügen Sie Apache HttpClient zu Ihren Maven- oder Gradle-Abhängigkeiten hinzu.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
Verwendung HttpComponentsClientHttpRequestFactory
als RequestFactory für RestTemplate. Der einfachste Weg, dies zu tun, wäre:
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
Aktivieren Sie DEBUG in Ihrer application.properties
Datei (wenn Sie Spring Boot verwenden).
logging.level.org.apache.http=DEBUG
Wenn Sie Spring Boot verwenden, müssen Sie sicherstellen, dass ein Protokollierungsframework eingerichtet ist, z. B. mithilfe einer Spring-Boot-Starter-Abhängigkeit, die Folgendes enthält spring-boot-starter-logging
.
3. Verwenden Sie einen Interceptor
Ich lasse Sie die Vorschläge, Gegenvorschläge und Fallstricke in den anderen Antworten und Kommentaren durchlesen und selbst entscheiden, ob Sie diesen Weg gehen möchten.
4. Protokollieren Sie die URL und den Antwortstatus ohne Text
Obwohl dies nicht den angegebenen Anforderungen für die Protokollierung des Körpers entspricht, können Sie schnell und einfach mit der Protokollierung Ihrer REST-Aufrufe beginnen. Es zeigt die vollständige URL und den Antwortstatus an.
Fügen Sie einfach die folgende Zeile zu Ihrer application.properties
Datei hinzu (vorausgesetzt, Sie verwenden Spring Boot und verwenden eine Spring Boot-Starter-Abhängigkeit, die Folgendes enthält spring-boot-starter-logging
).
logging.level.org.springframework.web.client.RestTemplate = DEBUG
Die Ausgabe sieht ungefähr so aus:
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]