颤动的http帖子失败连接从Windows 10上的android模拟器阻止

Posted

技术标签:

【中文标题】颤动的http帖子失败连接从Windows 10上的android模拟器阻止【英文标题】:flutter http post fails connection blocked from android emulator on windows 10 【发布时间】:2019-10-04 06:09:32 【问题描述】:

我的 Flutter 代码如下:

var url = "http://localhost:49912/api/Account/Register";
http
    .post(url,
    headers: "Content-Type": "application/json",
    body: js)
    .then((response) 
  print("Response status: $response.statusCode");
  print("Response body: $response.body");
);

http 响应是: [错误:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:SocketException:操作系统错误:连接被拒绝,errno = 111,地址 = localhost,端口 = 37316

现在我知道我的服务器代码在模拟器之外工作并进行一些挖掘并尝试使用模拟器中的 Chrome 并尝试导航到 127.0.0.1 并得到相同的错误。经过一番挖掘,我发现我应该使用 10.0.2.2 (您的主机环回接口的特殊别名(即您的开发机器上的 127.0.0.1) 所以我在模拟器 chrome 中输入 10.0.2.2 并查看我的 IISexpress 服务器。感觉很好,但后来我将我的 uri 更改为 10.0.2.2:49912 因为我的应用正在侦听端口 49912 并获得 400 Bad Request - Invalid Hostname

痛苦

【问题讨论】:

【参考方案1】:

终于想通了,尝试使用 Postman 的 127.0.0.1 调用我的服务并得到同样的错误请求。结果 IIS Express 正在侦听 localhost,因此需要通过编辑 来说服它在 127.0.0.1 上侦听 解决方案中 .vs 文件夹中的 applicationhost.config 文件。添加以下行<binding protocol="http" bindingInformation="*:49912:127.0.0.1" />

【讨论】:

【参考方案2】:

错误的最可能解决方法

试试http://192.168.43.84:49912/api/Account/Register

而不是http://localhost:49912/api/Account/Register

localhost 必须替换为你的系统 ip 地址

要获取系统 ip,只需转到 cmd 并输入 ipconfig

【讨论】:

以上是关于颤动的http帖子失败连接从Windows 10上的android模拟器阻止的主要内容,如果未能解决你的问题,请参考以下文章

windows远程连接MySQL失败

颤动的iOS构建失败(ld:找不到-lPods-Runner的库)

Winsock 连接失败并显示 WSAEFAULT |仅在 Windows 11 上出现错误

Android 10 上使用WifiNetworkSpecifier 连接WiFi后http请求失败 Connection failed

虚拟机复制后windows ssh连接不上

Angular 帖子在 Chrome 中失败