SpringBoot RestTemplate GET возвращает нулевое тело - PullRequest
0 голосов
/ 26 сентября 2019

При попытке добавить авторизацию заголовков в restTemplate.exchange, тело возвращает null.но запрос действителен и тело всегда содержит что-то.

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization",  this.getToken("public","public") );

HttpEntity<String> request = new HttpEntity<String>(headers);
ResponseEntity<String> response = restTemplate.exchange(uriFinal, HttpMethod.GET, request, String.class);

log.debug( response.getBody() );

профилирование с отладкой, я получил результаты:

===========================request begin================================================
URI         : http://localhost:8080/api/department?pageNumber=0&pageSize=20
Method      : GET
Headers     : [Accept:"text/plain, application/json, application/*+json, */*", Content-Type:"application/json", Authorization:"Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJwdWJsaWMiLCJleHAiOjE1Njk1NjQ5MTl9.o0N-y6dxXDPjvviRA66AR1gppwN31XEAjT3mttSdhTbUCuBlBFTdSIjnPyLqPyvyEu1sKIBax1QoKglejJ0cgw", Content-Length:"0"]
Request body 1: 
==========================request end================================================
============================response begin==========================================
Status code  : 200 OK
Status text  : 
Headers      : [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", Set-Cookie:"JSESSIONID=B0F5DFA38D26AD57C489F1366D291780; Path=/; HttpOnly", X-Content-Type-Options:"nosniff", X-XSS-Protection:"1; mode=block", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", Content-Type:"application/json", Transfer-Encoding:"chunked", Date:"Thu, 26 Sep 2019 14:03:07 GMT"]
Response body 2: {"content":[],"pageable":{"sort":{"sorted":false,"unsorted":true,"empty":true},"offset":0,"pageSize":20,"pageNumber":0,"paged":true,"unpaged":false},"totalPages":0,"totalElements":0,"last":true,"number":0,"sort":{"sorted":false,"unsorted":true,"empty":true},"size":20,"first":true,"numberOfElements":0,"empty":true}
=======================response end=================================================

1 Ответ

0 голосов
/ 26 сентября 2019

Когда я отключил перехватчик отладки, он работал!


@Bean
    public RestTemplate getRestTemplate(){
        RestTemplate restTemplate = new RestTemplate();
        if(apiRestDebugEnable){
            restTemplate.setInterceptors(Collections.singletonList(new RequestResponseLoggingInterceptor()));
        }
        return restTemplate;
    }

public class RequestResponseLoggingInterceptor implements ClientHttpRequestInterceptor {

    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
        logRequest(request, body);
        ClientHttpResponse response = execution.execute(request, body);
        logResponse(response);
        return response;
    }

    private void logRequest(HttpRequest request, byte[] body) throws IOException {
        if (log.isDebugEnabled()) {
            log.debug("===========================request begin================================================");
            log.debug("URI         : {}", request.getURI());
            log.debug("Method      : {}", request.getMethod());
            log.debug("Headers     : {}", request.getHeaders());
            log.debug("Request body 1: {}", new String(body, "UTF-8"));
            log.debug("==========================request end================================================");
        }
    }

    private void logResponse(ClientHttpResponse response) throws IOException {
        if (log.isDebugEnabled()) {
            log.debug("============================response begin==========================================");
            log.debug("Status code  : {}", response.getStatusCode());
            log.debug("Status text  : {}", response.getStatusText());
            log.debug("Headers      : {}", response.getHeaders());
            log.debug("Response body 2: {}", StreamUtils.copyToString(response.getBody(), Charset.defaultCharset()));
            log.debug("=======================response end=================================================");
        }
    }
}


...