如何使用Flutter调用API?

问题描述 投票:0回答:2

我正在 Flutter 中创建一个移动应用程序,并在物理设备(Android)上进行测试。我在本地的 wamp 服务器上运行我的 API。当我将路由置于失眠状态时,它会起作用并返回给我一个 JSON。然而,当我在我的 Flutter 应用程序中尝试这条路线时。这给了我一个错误。Flutter error

    final httpResponse = await http.get(Uri.parse('$_baseUrl/motorlocations'));

我尝试过: http://127.0.0.1:80/..。 http://本地主机:80/... http://10.0.2.2:80/...

http://myIPV4:80/... => 如果你看图片,端口是 42794,而我输入的是端口 80。

我尝试过这个命令:adb -d 反向 tcp:42794 tcp:80 (80) 但它不起作用。

flutter api routes adb port
2个回答
0
投票

如果打印 _baseUrl,你会看到什么?


0
投票

您遇到的问题与您的 Android 设备尝试连接到本地服务器的方式有关。当您使用 http://localhost、

http://127.0.0.1
http://10.0.2.2
时,Android 模拟器会将这些解释为对模拟器自己的环回网络接口的引用,而不是对主机的本地服务器的引用。这就是您看到不同端口号的原因。

要解决此问题,您可以改用主机的 IP 地址。请按照以下步骤操作:

  1. 查找主机的本地 IP 地址。您可以使用命令提示符中的

    ipconfig
    (在 Windows 上)或
    ifconfig
    (在 macOS 或 Linux 上)来查找它。查找 IPv4 地址(例如,
    192.168.1.x
    )。

  2. 在 Flutter 应用程序的代码中使用此 IP 地址:

    最终字符串baseUrl = 'http://your_host_machine_ip:80';

    最终httpResponse =等待http.get(Uri.parse('$baseUrl/yourAPI'));

© www.soinside.com 2019 - 2024. All rights reserved.