我的 flutter 应用无法连接到 FastApi

My flutter app fails to connect to FastApi

我试了好久都没弄明白,希望你能帮帮我。 我有我的 SQL 数据库 运行 以及 FastApi。 FastAPI 运行 于:http://127.0.0.1:8000 <- as seen here

并且在 OpenApi 上测试时完美运行 as shown here.

我的 flutter 应用发出以下获取请求:

    Future MakeGetProductRequest() async {
    Uri url = Uri.parse('http://localhost:8000/items?page=1&number=5');
    var response = await http.get(url);
    return response;
    }

当 运行 通过 USB 调试物理设备上的应用程序时,出现以下错误:

 Unhandled Exception: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 34214

完整控制台错误here

注意:我运行这是在物理设备上而不是模拟器上!

它不适用于环回地址。您的地址 127.0.0.1 在 flutter 设备上无法访问。

要连接它们,您必须像这样在 0.0.0.0 上 运行 FastAPI:

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

以上代码将使您的本地 IP 通过 LAN 可用。只需确保您的 phone 和 PC 连接到同一个 WIFI 网络。

要获取您 PC 的 IP 地址,运行 在命令提示符中输入:

ipconfig

你会得到这样的输出:

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . :
   IPv4 Address. . . . . . . . . . . : 192.168.29.82
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.29.1

你可以看到我的 IPv4 Address192.168.29.82 所以,要从我的 flutter 代码访问 FastAPI,我必须连接到 http://192.168.29.82:8000