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

Kotlin中Unirest请求API返回200,HttpClient/OkHttp却返回403?

问题分析与解决方案

最可能的原因:缺失符合要求的User-Agent请求头

Unirest会自动添加默认的User-Agent头(例如Unirest/1.4.9这类格式),而Java HttpClient、OkHttp、Retrofit默认不会携带这类符合多数API预期的User-Agent值。很多API服务器会通过校验User-Agent来拦截非标准客户端请求,从而返回403状态码。

解决方案:手动添加User-Agent头

在HttpClient请求中补充User-Agent头,模拟Unirest的默认值或API允许的格式即可:

val client = HttpClient.newBuilder().build();
val request = HttpRequest.newBuilder()
  .uri(URI.create(url))
  .GET()
  .header(headerKey, headerValue)
  .header("User-Agent", "Unirest/1.4.9") // 直接复用Unirest的默认值,或替换为API允许的其他标识
  .build()
val response = client.send(request, HttpResponse.BodyHandlers.ofString());
println(response.statusCode())

其他排查方向

  • 核对请求头格式:确认Bearer与token之间有且仅有一个空格(虽然Unirest请求正常说明此概率较低,但可快速验证)。
  • 对比完整请求头:用抓包工具(如Charles、Wireshark)捕获Unirest发送的所有请求头,将这些头完整复制到HttpClient请求中,排查是否有其他Unirest自动添加的必要头信息。
  • 检查环境差异:确认不同客户端是否在同一网络环境下运行,排除服务器端IP限制导致的403。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:15:42