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

Spring Boot对接Azure认知服务出现ConnectException/UnresolvedAddressException报错

问题根因

从报错栈最后一级java.nio.channels.UnresolvedAddressException可以判定,核心问题是你的Java程序无法正常解析配置的Azure认知服务端点域名,导致网络连接失败。

可行解决方案

按优先级依次排查即可:

  • 确认端点配置正确性
    你代码中打码的AZURE_ENDPOINT要确保和你在Azure后台创建的认知服务实际端点完全一致,没有多余的斜杠、特殊符号。可以先在代码中打印拼接后的完整请求地址验证:
    // 加在request创建之前
    String fullUrl = AZURE_ENDPOINT + AZURE_ENDPOINT_PATH;
    System.out.println("请求地址:" + fullUrl);
    
    把打印的地址复制到Postman里验证是否可以正常请求,排除地址拼接错误问题。另外注意国际版Azure端点后缀是.cognitiveservices.azure.com,国内世纪互联运营的Azure后缀是.cognitiveservices.azure.cn,要和你创建服务的区域版本匹配。
  • 配置Java程序代理
    你提到Postman可以正常调用,90%的概率是Postman走了系统/自定义代理,而Java程序默认没有配置代理。可以在测试的运行配置VM参数中添加代理配置:
    -Dhttps.proxyHost=你的代理IP地址
    -Dhttps.proxyPort=你的代理端口
    # 如果代理需要认证再加下面两个参数
    -Dhttps.proxyUser=代理用户名
    -Dhttps.proxyPassword=代理密码
    
    也可以直接在代码中给HttpClient指定代理:
    HttpClient client = HttpClient.newBuilder()
            .proxy(ProxySelector.of(new InetSocketAddress("你的代理IP", 代理端口)))
            .build();
    
  • 检查本地域名解析配置
    打开命令行执行ping 你的Azure端点域名,如果提示无法解析域名,检查本地hosts文件是否有该域名的错误配置,删除错误配置即可恢复正常解析。
  • 提前修正请求体错误
    你当前代码中的请求体参数是document,实际Azure认知服务实体识别接口要求的参数是documents(末尾多s),这个问题会在网络通之后触发400错误,提前修改可避免二次踩坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:24:00