You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter模拟器调用Win10本地localhost接口报错该如何解决?

Flutter模拟器访问Win10本地API报错解决方案

问题原因说明

第一个连接拒绝报错是因为Android模拟器的localhost指向模拟器自身,而非你的Win10宿主电脑,修改为10.0.2.2(Android模拟器专门用于映射宿主电脑localhost的保留IP)是正确操作。
第二个格式错误说明请求已经成功发送到你的本地API服务,但服务端返回的不是预期的JSON格式数据,而是HTML格式的错误页面,因此JSON解析失败,按照以下步骤排查配置即可:


配置调整步骤

  • 修改本地API的监听地址
    绝大多数后端服务默认仅监听127.0.0.1(仅本机可访问),需修改为监听所有网卡地址。以常见的ASP.NET Core为例:

    1. 打开项目下的Properties/launchSettings.json
    2. 将applicationUrl中的localhost替换为0.0.0.0,示例:
      "applicationUrl": "http://0.0.0.0:51797;https://0.0.0.0:71797"
      
    3. 重启API服务即可。
      其他后端框架可自行搜索修改监听IP的配置方法,确保服务允许非本机IP访问。
  • 配置Windows防火墙放行端口
    打开Windows Defender防火墙,添加一条入站规则,放行51797端口的TCP连接,避免模拟器的请求被系统防火墙拦截。

  • 配置后端服务允许跨域请求(CORS)
    Flutter模拟器发送的请求来源和本地API的域名不一致,会触发后端的跨域拦截规则,多数后端默认会返回HTML格式的跨域错误页。你需要在后端服务中添加CORS配置,允许跨域请求,测试阶段可临时允许所有来源、所有请求头、所有方法的访问。

  • 检查Flutter端的请求头配置
    确保你发送JSON请求时,主动添加了Content-Type: application/json请求头,示例代码(http包):

    var response = await http.post(
      Uri.parse('http://10.0.2.2:51797/test'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(yourRequestBody),
    );
    

    缺少该请求头时,后端可能无法识别请求格式,返回错误页面。

  • 可选排查方案
    可将接口地址替换为你Win10电脑的局域网IP(可通过cmd执行ipconfig查看,格式一般为192.168.x.x),同时确保模拟器连接的WiFi和你的Win10电脑在同一局域网下,可排查是否是10.0.2.2的映射异常问题。


内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:18:00