Flutter应用Android模拟器无法连接Swagger/API问题求助
解决Flutter Android模拟器无法连接本地API的问题
第一步:验证基础网络连通性
- 打开模拟器自带浏览器,直接访问
http://10.0.2.2:7166,确认能否加载Swagger页面:- 若打不开,说明是模拟器到PC的网络通路问题,和代码无关;
- 若能打开,再排查代码中的环境变量是否生效。
- 注意:
String.fromEnvironment读取的是编译时环境变量,如果启动Flutter时没通过--dart-define=baseUrl=http://10.0.2.2:7166传递参数,才会使用defaultValue。可以在代码中打印_baseUrl的值,确认实际使用的地址是否正确。
第二步:调整模拟器网络配置
- 无需特意让模拟器连接WiFi,Android模拟器默认通过宿主机转发网络,但需检查:
- 进入模拟器设置 → 网络和互联网 → 移动网络 → 接入点名称(APN),确保代理设置为空白,避免自定义代理拦截本地请求;
- 重启模拟器网络:终端执行
adb shell svc wifi disable && adb shell svc wifi enable,或直接重启模拟器。
第三步:检查API服务的绑定范围
- 若API仅绑定
localhost或127.0.0.1,模拟器的10.0.2.2无法访问,需将API绑定到所有网卡:- ASP.NET Core项目:修改launchSettings.json的
applicationUrl为http://0.0.0.0:7166;https://0.0.0.0:7167; - 命令行启动API:执行
dotnet run --urls=http://0.0.0.0:7166。
- ASP.NET Core项目:修改launchSettings.json的
第四步:代码与证书排查
- 若API使用自签名HTTPS证书,代码中
badCertificateCallback = true的设置是必要的,但需确保请求协议和API一致(HTTP/HTTPS不能混着用); - 打印
fullUrl的值,确认拼接后的请求地址无格式错误(比如多斜杠、端口错误)。
兜底排查方案
- 无需直接重装模拟器,先尝试创建新模拟器(比如更换Android版本为API 33),排除当前模拟器的配置异常;
- 检查PC防火墙,确认未拦截7166端口的入站TCP请求,可手动添加允许规则。
内容的提问来源于stack exchange,提问作者Chubbyb0b
相关产品推荐
相关产品推荐

