HTTP 404 - No response body available

一、问题描述

1、异常信息

shell 复制代码
org.springframework.ai.retry.NonTransientAiException: HTTP 404 - No response body available
	at org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration$2.handleError(SpringAiRetryAutoConfiguration.java:109) ~[spring-ai-autoconfigure-retry-1.0.0.jar:1.0.0]
	at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:58) ~[spring-web-6.2.10.jar:6.2.10]
	at org.springframework.web.client.StatusHandler.lambda$fromErrorHandler$1(StatusHandler.java:71) ~[spring-web-6.2.10.jar:6.2.10]
	at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146) ~[spring-web-6.2.10.jar:6.2.10]
	at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:838) ~[spring-web-6.2.10.jar:6.2.10]
	at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.lambda$readBody$4(DefaultRestClient.java:827) ~[spring-web-6.2.10.jar:6.2.10]
	at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:216) ~[spring-web-6.2.10.jar:6.2.10]
	at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:826) ~[spring-web-6.2.10.jar:6.2.10]

2、应用场景

  • 调用通义万相文生图

二、解决办法

1、解决步骤

AI 分析

这个 NonTransientAiException 错误提示表明 Spring AI 在调用大模型服务时,收到了 HTTP 404 状态码,且服务器没有返回任何错误信息。这意味着请求的地址无法被找到。

结合常见的 Spring AI 使用场景,这通常不是代码逻辑的错误,而是配置或网络环境的问题。以下是几个主要排查方向:

🔑 检查 API 基础地址 (Base URL)

这是最常见的原因。你需要确认配置文件(如 application.ymlapplication.properties)中指定的 API 地址是否正确。

  1. 检查拼写错误:仔细核对 URL 的拼写,确保没有多余的字符或缺少路径。
  2. 确认版本路径 :许多大模型服务的 API 地址中包含版本号(例如 /v1/, /api/v1/),请确保你使用的地址与服务提供商的最新文档一致。
  3. 区分本地与远程
    • 如果你调用的是远程云服务(如 OpenAI, 阿里云百炼等),请登录对应平台,从控制台获取正确的 endpoint 地址。
    • 如果你调用的是本地部署 的大模型服务(如 Ollama, LM Studio, Open WebUI 等),请确保服务已启动,并且 URL 指向的是本地地址(如 http://localhost:11434/api)。

🌐 检查网络连接与代理

如果你确定 URL 没有拼写错误,那么可能是网络层面的问题。

  • 网络连通性:如果你在公司内网或使用了 VPN,可能无法直接访问外部的 API 地址。请检查网络设置,尝试关闭 VPN 或配置代理。
  • 代理配置:如果必须通过代理访问外网,请在 Java 启动参数或代码中正确配置 HTTP 代理。

🛠️ 检查模型名称

在某些情况下,如果请求的模型名称 (model name) 在服务端不存在,服务端也可能返回 404 而不是更具体的 400 错误。

  • 请检查你的配置,确保 spring.ai.chat.options.model(或其他类似配置项)的值是服务端支持的、完全正确的模型名称。例如,不要将 qwen-plus 错误地写成 qwen

💡 如何快速定位?

最有效的方法是开启 HTTP 客户端的调试日志,查看 Spring AI 实际发出的完整请求地址。

application.yml 中添加:

yaml 复制代码
logging:
  level:
    org.springframework.web.client: DEBUG

启动应用后,仔细查看控制台输出的 Request URL,复制这个完整的 URL 到浏览器或 Postman 中直接访问,观察返回结果,这能帮你最直观地判断是地址错了还是网络不通。

相关推荐
YMWM_2 小时前
UDP协议详解:从原理到Python实践
网络·网络协议·udp
pengyi8710152 小时前
共享 IP 与独享 IP 怎么选?被封后升级方案避坑
网络·网络协议·tcp/ip
YuanDaima20482 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
凯勒姆4 小时前
网工网络设备原理及配置
网络·智能路由器
上海云盾-小余4 小时前
网站恶意爬虫拦截策略:智能识别与封禁实操方案
网络·爬虫·安全·web安全
xhbh6664 小时前
网关端口映射和路由器端口转发有什么区别?配置要点全解析
运维·服务器·网络·智能路由器·端口映射·映射·无痕网关
半壶清水5 小时前
用P4 Tutorial、BMv2 和 Mininet‌解析网络第一集------模拟环境搭建
运维·服务器·网络·网络协议·tcp/ip
高翔·权衡之境5 小时前
主题10:实时性——硬实时与软实时
服务器·网络·驱动开发·信息与通信·智能硬件
BullSmall5 小时前
Promtheus和Alertmanager 之间是通过管理平面还是业务层面IP交互
网络协议·tcp/ip·平面
黄筱筱筱筱筱筱筱6 小时前
交换综合实验
网络