当前位置: 首页 > 知识库问答 >
问题:

Spring RestTemplate Gzip响应缺少Content-Length标头

王俊哲
2023-03-14

我正在使用Spring Boot集成到第三方,它可以提供gzipped响应,我想记录压缩响应体的大小与解压缩响应体的大小,这样我们就可以审计帐单等。

我正在使用RestTemplate.Exchange发出GET请求,并且响应正确返回,但是我无法检索响应中的内容长度头。

我知道第三方正在将其发回,因为当我使用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,但并不愉快。

有人有过同样的问题吗?

共有1个答案

邵献
2023-03-14

如果您使用的是TestRestTemplate,它将不会显示内容编码时的gzip,请尝试使用RestTemplate

 类似资料:
  • 问题内容: 我正在使用Android中包含的Apache HttpClient(4.1)执行HttpPut。我已经验证我只有1个content- length标题。但是,每次发送请求时,都会收到有关已指定的Content-Length标头的协议异常。 引起原因:org.apache.http.ProtocolException:Content- Length标头已存在于org.apache.htt

  • Content-Length实体报头指示该实体主体的大小,以字节为单位的十进制数,发送到接收方。 Header type Entity header Forbidden header name yes 语法 Content-Length: <length> 指令 <length> 十进制数字的长度。 规范 Specification Title RFC 7230, section 3.3.2: C

  • 我正在尝试使用JWT身份验证设置一个简单的Angularjs应用程序。 我给新注册的用户发了一封带有jwt令牌链接的邮件,以验证该邮件是否存在。链接如下所示: < code > http://127 . 0 . 0 . 1:3000/verify email/eyj 0 exaioijkv 1 qilchbgcioijiuzi 1 nij 9 . eyj 1c 2 vytmftzsi 6 injp

  • 如何使用.NET将Content-Length,Content-Type和Last-Modified添加到HttpResponseMessage标头。 我需要手动将所有这些值添加到响应中,添加这些字段后,我需要从服务器返回响应。我试着以空闲的方式添加这些字段 我得到了休耕的错误 “错误使用了标头名称。请确保请求标头与HttpRequestMessage一起使用,响应标头与HttpReponseMe

  • 我的骆驼路线是CXF接收器 错误消息:没有可用的正文类型: com.customer.requestcustomeremail.SendEmailRequest 但具有值:com.customer.requestcustomeremail.SendEmailRequest@1bcd32c6类型:java.lang.String on: Message[]。原因:没有类型转换器可用于从类型:java

  • 问题内容: 我正在尝试实现简单的xhr抽象,并且在尝试设置POST标头时收到此警告。我认为这可能与在单独的js文件中设置标头有关,因为当我在.html文件的标记中设置标头时,效果很好。POST请求工作正常,但是我收到此警告,并且很好奇为什么。我同时针对标头和标头收到此警告,但仅在WebKit浏览器(Chrome 5 beta和Safari 4)中得到此警告。在Firefox中,我没有收到任何警告,