无法在真实设备上获取 Flutter 应用程序以在本地 Node.j 服务器 运行 上发出 http 请求

Can't get Flutter app on real device to make http request on Node.j server running locally

我在 127.0.0.1:3000 上本地有我的节点服务器 运行 并且在 Chrome localhost:5000 上使用我的 Flutter 应用程序 运行 我可以发送 http 请求到 url localhost:3000 他们都会回应。 我现在正在通过 USB 连接的真实 Android 设备上尝试 运行 它,并且使用相同的 url 我得到 error: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 45614 错误。 现在,如果 url 本地主机端口是 3000,为什么要使用端口 45614(来自错误)?

我得到了我的 ip4 地址,并在我的 Flutter 应用程序 url 中使用了它,正如在 SO 上的各种帖子中所建议的那样,尝试使用和不使用端口作为 static String dbUrl = '192.168.43.105';static String dbUrl = '192.168.43.105:3000'; 但是请求没有到达服务器。 我尝试使用 adb tcpip 3000 将 adb 设置为 Node.js 服务器端口 3000,然后重新启动侦听端口 3000 的广告服务器,但请求仍然不会到达我的 Node.js 服务器..

运行 adb devices 命令让我 5203e95d43cd93a7 device 这是连接的 Android 平板电脑,使用 adb forward --list 我得到 5203e95d43cd93a7 tcp:56393 tcp:41547 但我无法找出哪个端口是哪个以及如何使用它.. 很抱歉这个问题可能很混乱,但正如你所看到的,我在这里很迷茫,在阅读了这里关于这个主题的各种帖子后,我只会让我更加困惑...... 任何帮助将不胜感激。 非常感谢。

首先尝试添加 http://,所以它会像这样

http://192.168.43.105:3000

如果这不起作用,请尝试在端口 3000 上允许防火墙。

注意:以下解决方案适用于 .netcore 服务器,因此它可能不适用于 nodejs

尝试将您的服务器 url 更改为以下内容:

http://0.0.0.0:5000

首先你需要获取你的电脑 IP 地址,例如你的 IP 地址是 192.168.1.1 然后添加你在后端使用的端口,如 8000 或 8080。所以现在你的 url 就像http://192.169.1.1:8000/。并确保你的 server/backend 是 运行 并且你的设备和笔记本电脑连接到同一网络。

会成功的!