Unirest 不返回内容编码 gzip 标头

问题描述 投票:0回答:1

我在java应用程序中使用Unirest进行API调用。 API 服务器是一个启用了压缩的 spring-boot 应用程序

server.compression.enabled=true
server.compression.mime-types=application/json
server.compression.min-response-size=1

这是我的 API 调用

HttpResponse<String> response = Unirest.post(url)
                .header("Accept-Encoding", "gzip")
                .header("Content-Type", "application/json")
                .body(request)
                .asString();

但是响应标头“Content-Type”始终为“application/json”

Unirest版本

<dependency>
  <groupId>com.konghq</groupId>
  <artifactId>unirest-java</artifactId>
  <version>3.14.5</version>
 </dependency>

我正在使用来自 Spring boot 应用程序 v.3.3.5 的 SSL 连接。

我尝试使用curl进行相同的调用

curl --request POST --url 'myurl' --header 'Accept-Encoding: gzip' --header 'Content-Type: application/json' --data 'jsonData' -i | less

回应

...
HTTP/1.1 200
vary: accept-encoding
Content-Encoding: gzip
Content-Type: application/json 
...

我尝试了 Insomnia 客户端的相同 API 调用

> POST 
...
> User-Agent: insomnia/2021.4.1
> Content-Type: application/json
> Accept-Encoding: gzip

回应:

< HTTP/1.1 200 
< vary: accept-encoding
< Content-Encoding: gzip
< Content-Type: application/json
...

我还检查了 APi 服务器中的请求标头,它们都有“Accept-Encoding: gzip”。看起来它不仅仅适用于 Unirest。

java spring-boot rest unirest http-compression
1个回答
0
投票

我找到了答案。基于这 2 个 Unirest 问题:

Unirest(准确地说是 Apache Http 客户端)在底层解压缩文件,然后替换

Content-Encoding: gzip
。 我还在服务器端使用 Unirest 和非 Unirest 客户端测试了响应长度,无论有没有压缩,大小都是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.