---- Julio 2019 ----
(usando Spring Boot)
Me sorprendió que Spring Boot, con toda su magia de Configuración Cero, no proporciona una manera fácil de inspeccionar o registrar un cuerpo de respuesta JSON simple con RestTemplate. Revisé las diferentes respuestas y comentarios proporcionados aquí, y comparto mi propia versión destilada de lo que (todavía) funciona y me parece una solución razonable, dadas las opciones actuales (estoy usando Spring Boot 2.1.6 con Gradle 4.4 )
1. Usando Fiddler como proxy HTTP
En realidad, esta es una solución bastante elegante, ya que evita todos los esfuerzos engorrosos de crear su propio interceptor o cambiar el cliente http subyacente a apache (ver más abajo).
Instalar y ejecutar Fiddler
y entonces
agregar -DproxySet=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
a sus opciones de VM
2. Usando Apache HttpClient
Agregue Apache HttpClient a sus dependencias Maven o Gradle.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
Usar HttpComponentsClientHttpRequestFactory
como RequestFactory para RestTemplate. La forma más sencilla de hacerlo sería:
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
Habilite DEBUG en su application.properties
archivo (si está usando Spring Boot)
logging.level.org.apache.http=DEBUG
Si está utilizando Spring Boot, deberá asegurarse de tener un marco de registro configurado, por ejemplo, mediante el uso de una dependencia spring-boot-starter que incluya spring-boot-starter-logging
.
3. Use un interceptor
Te dejaré leer las propuestas, contrapropuestas y trucos en las otras respuestas y comentarios y decidir por ti mismo si quieres seguir ese camino.
4. URL de registro y estado de respuesta sin cuerpo
Aunque esto no cumple con los requisitos establecidos para registrar el cuerpo, es una forma rápida y sencilla de comenzar a registrar sus llamadas REST. Muestra la URL completa y el estado de respuesta.
Simplemente agregue la siguiente línea a su application.properties
archivo (suponiendo que esté utilizando Spring Boot, y suponiendo que está utilizando una dependencia de inicio de arranque de Spring que incluye spring-boot-starter-logging
)
logging.level.org.springframework.web.client.RestTemplate = DEBUG
La salida se verá más o menos así:
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]