Flutter 连接本地服务(模拟器)
因为后端是使用.net写的web api, 所以尝试直接使用localhost, 但是会报错:
E/flutter ( 4879): SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 47060
百度了一下错误,127.0.0.1 和 localhost在安卓模拟器里面都会指向模拟器的本机地址,而非PC本机地址。
在安卓中,会默认将电脑本机地址映射为10.0.2.2,所以我们需要将localhost:10000修改为10.0.2.2:10000。
再次验证是否能在模拟器中访问到我们的本机服务,打开模拟器中的Chrome浏览器,输入连接10.0.2.2:1000, 仍旧报错“Bad request”。
我不知道是不是因为10.0.2.2 无法映射localhost(只能映射127.0.0.1), 然后.net服务其实是会屏蔽除localhost之外的地址绑定。
你可以尝试一下,我是可以在本机使用localhost:端口来访问.net服务,但是不能使用127.0.0.1:端口来访问.net服务,会报相同的错误“Bad request”.
尝试在hosts文件添加“127.0.0.1 localhost”不能解决我的问题。
我是通过下面方法来解决这个问题的:
1. 我们启动本地.net服务之后,右下角会出现一个IIS Express的图标,右键并选择“显示所有应用程序”
2. 选择和你相同同名的网站名称,ctrl+鼠标作键如图位置的配置文件,一般来说,只会出现下面的第一行,第二行是因为我已经添加过了。
3. 在site下面添加127.0.0.1的绑定
4. 重启VS
5. 再次验证,使用模拟器中的谷歌浏览器访问10.0.2.2:端口,这时候就应该能够在模拟器中成功访问到我们的本地服务。