You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Unirest发起GET API请求时状态码200但无响应体

问题排查与解决方案

你遇到的情况是Unirest发起GET请求返回200状态码但响应体为空,相同参数的curl请求却能正常获取JSON响应,以下是几个针对性的排查和解决方向:

1. 开启自动响应压缩处理

多数API会返回gzip压缩的响应,curl默认会自动解压,但Unirest默认可能未开启该功能。在发起请求前添加以下配置:

Unirest.config().enableAutomaticResponseCompression(true);

2. 改用JSON响应解析方式

尝试替换asString()为asJson(),直接解析JSON响应,避免字符串处理环节的潜在问题:

HttpResponse<JsonNode> response = Unirest.get(url)
    .header("Authorization", "Bearer " + access_token)
    .header("Cache-Control", "no-cache, no-store, must-revalidate")
    .header("Pragma", "no-cache")
    .header("Expires", "0")
    .header("Accept", "application/json")
    .asJson();

String responseBody = response.getBody().toString();

3. 对齐curl的请求头

curl有默认的User-Agent等请求头,Unirest的默认请求头可能与curl存在差异,导致API返回空内容。可以添加与curl一致的User-Agent头(替换为你实际使用的curl版本):

.header("User-Agent", "curl/7.68.0")

同时打印Unirest发送的所有请求头,与curl的请求头逐一对比,确保完全一致。

4. 打印响应头排查问题

获取响应后打印所有响应头,确认响应是否真的携带内容:

logger.log(Level.ALL, "Response Headers: " + response.getHeaders());

如果响应头中Content-Length为0,需排查API侧问题;如果存在Content-Encoding: gzip,则说明是压缩未处理的问题。

5. 升级Unirest版本

旧版本Unirest可能存在响应读取的bug,尝试升级到最新稳定版本,例如Maven依赖配置:

<dependency>
    <groupId>com.konghq</groupId>
    <artifactId>unirest-java</artifactId>
    <version>3.14.1</version> <!-- 替换为最新版本号 -->
</dependency>

内容的提问来源于stack exchange,提问作者Sanjay N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:07:21