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配置异常
- 检查Dio实例是否被错误配置了代理:如果本地开启了代理工具,Dio可能会将请求转发到代理端口(比如错误信息中的49266),导致连接被拒绝。可移除代理配置或关闭代理工具测试。
- 确认请求URL完整正确:确保URL以
https://开头,无拼写错误,未错误添加额外端口。 - 检查
_checkOptions方法:确认该方法没有将HTTPS请求强制转为HTTP,或修改了目标端口。
验证网络环境限制
用测试设备的浏览器直接访问https://crmdemo.fortex.com/open/public/login,排除网络本身的限制(比如公司防火墙、VPN拦截、Wi-Fi访问限制等)。处理SSL证书问题
如果目标服务器使用自签名证书或不被系统信任的证书:- Android:在Dio中通过
HttpClientAdapter配置自定义证书信任逻辑。 - iOS:除ATS配置外,需将证书导入项目,并在
Info.plist中配置对应信任规则。
- Android:在Dio中通过
内容的提问来源于stack exchange,提问作者lamb
相关产品推荐
相关产品推荐

