Flutter应用在Android模拟器请求Laravel API遇域名解析失败
解决Android模拟器无法访问本地Laravel API域名的问题
问题原因
Android模拟器默认网络环境无法直接解析你本地配置的自定义域名flutter-api.test,而Chrome浏览器走本地电脑DNS解析,所以能正常访问。
解决方案
1. 用电脑局域网IP替换自定义域名
先找到电脑的局域网IP:
- Windows:执行
ipconfig命令,查看无线/以太网适配器的IPv4地址 - Mac/Linux:执行
ifconfig或ip addr命令,找到对应网卡的IP地址
把API请求地址替换为http://你的局域网IP/api/categories,比如:
http.get(Uri.parse('http://192.168.1.105/api/categories'));
2. 修改模拟器hosts文件(适用于Android 7.0+)
- 确保模拟器开启root权限(多数第三方模拟器默认开启,如夜神、雷电)
- 执行adb命令连接模拟器:
adb shell - 挂载系统分区为可读写:
mount -o rw,remount /system - 编辑hosts文件:
vi /system/etc/hosts - 添加一行:
你的电脑局域网IP flutter-api.test,保存退出 - 重启模拟器或刷新网络
3. 使用模拟器专属回环IP
Android模拟器中,10.0.2.2等价于宿主电脑的127.0.0.1,如果Laravel API监听在本地回环地址,可直接把请求地址改成:
http.get(Uri.parse('http://10.0.2.2/api/categories'));
注意:如果Laravel配置了CORS或域名白名单,需要在.env或CORS配置中允许该IP的请求。
内容的提问来源于stack exchange,提问作者zaster
相关产品推荐
相关产品推荐

