首页 > 解决方案 > 尝试将 http get 请求从物理设备发送到 pc 时颤动“连接被拒绝”(errno = 111)

问题描述

我构建了一个颤振应用程序,它与我用烧瓶编写的网络服务器通信。如果我使用虚拟设备,一切都按预期工作,没有任何错误。一旦我在物理设备上以发布模式尝试它,在与服务器通信时就会遇到问题

我在使用物理设备时唯一改变的是 ip。我10.0.2.2在虚拟设备和我的计算机上使用 ip4 地址 - 我在 Windows 10 中使用 ipconfig 获得 - 在物理设备上

导致问题的行是

 await http.get(url).timeout(Duration(seconds: 15), onTimeout: () {
        // Handle timeout
        // This entire thing is in a try-catch block in an async function
      });

在物理设备上的调试模式下,当发送 HTTP get 请求时 VSCode 立即说

Exception has occurred.
SocketException (SocketException: OS Error: Connection refused, errno = 111, address = 192.168.178.20, port = 43378)

第一个问题:为什么是端口 43378?是 HTTP 请求发送到的端口吗?因为当我运行烧瓶应用程序时,它说:

Running on http://127.0.0.1:5000/

这可能是问题吗?我本来希望异常说端口是 URL 中声明的 5000。或者我是否必须改变我设置烧瓶应用程序的方式?目前它是开发服务器,因为我在付款和部署之前仍在测试

但是我希望我没有忘记任何重要信息。任何关于可能出错或如何在此处调试的建议都非常受欢迎

标签: androidflutterhttpnetworkingrequest

解决方案


将一个 Uri 对象传递给 http.get 函数。Uri 类允许您将端口指定为文档https://api.dart.dev/stable/2.12.0/dart-core/Uri-class.html


推荐阅读