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:端口,这时候就应该能够在模拟器中成功访问到我们的本地服务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术