Flutter调用Docker部署的认证接口遇连接拒绝问题求助
解决Flutter调用Docker部署接口时的SocketException连接拒绝问题
问题原因
你在Postman里能用localhost:8000访问接口,是因为Postman运行在宿主机上,这里的localhost就是你的电脑。但Flutter运行在模拟器或真机时,localhost指向的是设备本身,不是你的电脑,所以会出现连接拒绝的错误。
解决方案
根据你使用的设备类型,替换代码里的apiUrl:
1. Android模拟器
把localhost换成Android模拟器预留的宿主机映射IP 10.0.2.2:
const apiUrl = 'http://10.0.2.2:8000/api/sign-in/';
2. iOS模拟器
iOS模拟器的网络和宿主机共享,直接用localhost通常可以正常访问;如果仍有问题,换成宿主机的局域网IP:
const apiUrl = 'http://localhost:8000/api/sign-in/'; // 或者用宿主机实际IP,比如192.168.1.100,根据你的网络情况替换 const apiUrl = 'http://192.168.1.100:8000/api/sign-in/';
3. 真机(Android/iOS)
必须使用宿主机的局域网IP地址:
- Windows:打开命令提示符,输入
ipconfig,找到对应网络适配器下的IPv4地址 - Mac/Linux:打开终端,输入
ifconfig(或ip addr),找到对应网络接口的inet地址
替换URL示例:
// 替换成你的宿主机实际IP const apiUrl = 'http://192.168.1.100:8000/api/sign-in/';
额外检查
确认Docker容器启动时已正确做端口映射,命令需包含-p 8000:8000,比如:
docker run -d -p 8000:8000 your-image-name
内容的提问来源于stack exchange,提问作者Lorenzo Cutrupi
相关产品推荐
相关产品推荐

