---- julho de 2019 ----
(usando o Spring Boot)
Fiquei surpreso que o Spring Boot, com toda a mágica de Configuração Zero, não fornece uma maneira fácil de inspecionar ou registrar um corpo de resposta JSON simples com o RestTemplate. Examinei as várias respostas e comentários fornecidos aqui e estou compartilhando minha própria versão destilada do que (ainda) funciona e me parece uma solução razoável, dadas as opções atuais (estou usando o Spring Boot 2.1.6 com Gradle 4.4 )
1. Usando o Fiddler como proxy http
Essa é, na verdade, uma solução bastante elegante, pois ignora todos os esforços pesados de criar seu próprio interceptor ou alterar o cliente http subjacente para apache (veja abaixo).
Instale e execute o Fiddler
e depois
adicione -DproxySet=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
às suas opções de VM
2. Usando o Apache HttpClient
Adicione o Apache HttpClient às suas dependências do Maven ou Gradle.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
Use HttpComponentsClientHttpRequestFactory
como RequestFactory para RestTemplate. A maneira mais simples de fazer isso seria:
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
Ative DEBUG no seu application.properties
arquivo (se você estiver usando o Spring Boot)
logging.level.org.apache.http=DEBUG
Se você estiver usando o Spring Boot, precisará ter uma estrutura de registro configurada, por exemplo, usando uma dependência do spring-boot-starter que inclua spring-boot-starter-logging
.
3. Use um interceptador
Vou deixar você ler as propostas, contrapropostas e dicas nas outras respostas e comentários e decidir por si mesmo se deseja seguir esse caminho.
4. URL do log e status da resposta sem corpo
Embora isso não atenda aos requisitos estabelecidos para registrar o corpo, é uma maneira rápida e simples de começar a registrar suas chamadas REST. Ele exibe o URL completo e o status da resposta.
Basta adicionar a seguinte linha ao seu application.properties
arquivo (supondo que você esteja usando o Spring Boot e supondo que você esteja usando uma dependência do iniciador do boot que inclua spring-boot-starter-logging
)
logging.level.org.springframework.web.client.RestTemplate = DEBUG
A saída será mais ou menos assim:
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]