Я использую Spring Boot для интеграции с третьей стороной, которая может предоставить сжатые ответы, и я хочу записать размер сжатого тела ответа в сравнении с распакованным, чтобы мы могли проводить аудит для выставления счетов и т. Д.
I 'Я использую RestTemplate.exchange, чтобы сделать запрос GET, и ответ возвращается правильно, однако я не могу получить заголовок Content-Length в ответе.
Я знаю, что третья сторона отправляет его обратно, потому что ямогу видеть это, когда я делаю тот же запрос, используя Curl:
HTTP/1.1 200 OK
Date: Mon, 04 Feb 2019 15:40:10 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 558
Connection: close
Content-Type: application/json
Это мой код Java, выполняющий запрос и регистрирующий длины:
final ResponseEntity<String> responseEntity = restTemplate.exchange(url, GET, entity, String.class);
final String body = responseEntity.getBody();
LOG.info("Payload sizes: compressed={}, uncompressed={}", responseEntity.getHeaders().getContentLength(), body.length());
Для заголовков запроса, которые я устанавливаю'Accept-Encoding: gzip, deflate' согласно документации для третьей стороны.Однако, когда я получаю ответ, вызов getContentLength () просто возвращает -1.Я много искал вокруг этого и пытался использовать ClientHttpRequestInterceptor, но без радости.
У кого-нибудь когда-нибудь были такие же проблемы?