Flutter调用外部API报SocketException连接被拒errno=111如何解决
问题解决方法
SocketException: Connection refused, errno = 111 错误本质是你的应用请求的目标服务没有正常响应,按你运行的设备环境对应处理即可:
运行在Android模拟器
Android模拟器会将自身识别为localhost,无法直接访问电脑本地运行的Algorand KMD服务:
- 找到你初始化Algorand客户端的代码,将KMD服务地址中的
localhost替换为Android模拟器专属宿主机IP10.0.2.2 - 确认端口和KMD服务实际运行端口一致,默认KMD端口为4002
运行在iOS模拟器
iOS模拟器默认可直接访问电脑本地服务,排查以下两点:
- 确认本地Algorand节点启动时附带
--kmd参数,KMD服务已正常运行,未被系统防火墙拦截 - 核对客户端初始化时填写的KMD端口、API token与本地KMD服务配置一致
运行在物理真机
真机和电脑需处于同一局域网下:
- 替换请求地址中的
localhost为电脑的局域网IP(格式通常为192.168.x.x) - 修改KMD服务配置,将监听地址从
127.0.0.1改为0.0.0.0,允许局域网内设备访问 - 关闭电脑系统防火墙,或放行对应KMD端口的入站规则
额外注意事项
- 可先在电脑端通过Postman/curl工具直接调用KMD接口,确认服务本身可正常响应,排除服务故障问题
- 你当前代码中
GenerateKeyRequestBuilder直接将walletHandleToken写死为aa是错误写法,后续需要替换为initWalletHandleToken接口返回的实际token值,否则接口鉴权会失败,但该问题不影响本次连接报错的解决
内容的提问来源于stack exchange,提问作者user16560224
相关产品推荐
相关产品推荐

