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:端口,这时候就应该能够在模拟器中成功访问到我们的本地服务。

 

posted @ 2020-07-28 17:11  一口一个小馒头  阅读(1930)  评论(0编辑  收藏  举报