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 中直接访问,观察返回结果,这能帮你最直观地判断是地址错了还是网络不通。

相关推荐
zmj32032417 小时前
以太网和CAN,WIFI
网络
克莱因35817 小时前
思科Cisco 多区域OSPF(2
网络·路由·思科
RunningBComeOn17 小时前
如何通过wireshark抓取802.11无线网络的数据包
网络·测试工具·wireshark
那山川17 小时前
canbus操作记录
linux·服务器·网络
wanhengidc17 小时前
云手机的工作原理
运维·服务器·网络·网络协议·智能手机
前端 贾公子17 小时前
Vite 开发环境配置 HTTPS
网络协议·http·https
懒大王952717 小时前
http和https的异同点和优缺点
网络协议·http·https
OPHKVPS17 小时前
微软确认 Windows 11 24H2 高危漏洞:累计更新导致开始菜单与文件资源管理器崩溃
网络·安全
埃伊蟹黄面17 小时前
Socket 通用结构体
linux·网络
运维儿17 小时前
7.ARP 代理与端口隔离:满足通信需求,保证通信安全
网络·智能路由器·代理模式·linux 网络·云计算网络