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

Flutter Dio报SocketException连接拒绝问题求助

解决Flutter Dio连接被拒绝的问题

针对你遇到的SocketException: Connection refused错误,按以下步骤排查处理:

  • 确认目标服务可用性
    用Postman、curl或浏览器直接请求https://crmdemo.fortex.com/open/public/login,验证服务器是否正常响应。如果外部工具也无法访问,说明问题出在服务器端(比如服务未启动、端口未开放、域名解析错误等),需先排查服务端问题。

  • 配置iOS ATS规则
    iOS默认的App Transport Security(ATS)会限制不符合安全标准的HTTPS连接。在项目的Info.plist中添加以下配置(测试阶段可临时放宽限制,正式环境建议针对特定域名配置):

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    若要更严谨,可针对目标域名设置例外:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>crmdemo.fortex.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
            </dict>
        </dict>
    </dict>
    
  • 排查Dio配置异常

    1. 检查Dio实例是否被错误配置了代理:如果本地开启了代理工具,Dio可能会将请求转发到代理端口(比如错误信息中的49266),导致连接被拒绝。可移除代理配置或关闭代理工具测试。
    2. 确认请求URL完整正确:确保URL以https://开头,无拼写错误,未错误添加额外端口。
    3. 检查_checkOptions方法:确认该方法没有将HTTPS请求强制转为HTTP,或修改了目标端口。
  • 验证网络环境限制
    用测试设备的浏览器直接访问https://crmdemo.fortex.com/open/public/login,排除网络本身的限制(比如公司防火墙、VPN拦截、Wi-Fi访问限制等)。

  • 处理SSL证书问题
    如果目标服务器使用自签名证书或不被系统信任的证书:

    • Android:在Dio中通过HttpClientAdapter配置自定义证书信任逻辑。
    • iOS:除ATS配置外,需将证书导入项目,并在Info.plist中配置对应信任规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:55:41