如何测试从 Flutter 应用程序到 localhost 服务的 api 调用?

Posted

技术标签:

【中文标题】如何测试从 Flutter 应用程序到 localhost 服务的 api 调用?【英文标题】:How to test api calls from flutter app to localhost service? 【发布时间】:2020-07-11 19:23:44 【问题描述】:

我正在尝试了解如何测试从我的 Flutter 应用程序(在模拟器中运行)到我的后端服务的 http 调用,该后端服务在我的电脑上 https://localhost:8080 的调试中运行。

我知道直接从颤振与https://localhost:8080 交谈是行不通的,因为它意味着“模拟器的本地主机”,所以我正在和我的电脑本地 ip 交谈,但我得到了CERTIFICATE_VERIFY_FAILED,因为当然https://192.168.1.123:8080 没有'没有签名证书。

处理这种情况的正确方法是什么?

【问题讨论】:

【参考方案1】:

您需要使用主机的本地主机,而不是模拟器的本地主机。为此,您需要使用 10.0.2.2,然后使用您的端口号,因此在您的情况下,对 https://10.0.2.2:8080 进行 http 调用。在内部,android 将对 10.0.2.2 的调用重新路由到 127.0.0.1,这是您的开发机器上的 localhost ip。

How do you connect localhost in the Android emulator?

更多信息:https://developer.android.com/studio/run/emulator-networking.html

【讨论】:

谢谢。我应该回退到http还是我可以坚持使用https? 我不确定,我个人使用http。我不认为 https 开箱即用,我在 Medium 上找到了一篇关于为开发目的设置 SSL 的文章。 medium.com/@noumaan/ssl-app-dev-a2923d5113c6 这是否也适用于 ios 模拟器/设备?谢谢。 如果您的意思是“这个”是 10.0.2.2 IP 地址:不,这仅适用于 Android。对于 iOS,您可以使用普通的 127.0.0.1

以上是关于如何测试从 Flutter 应用程序到 localhost 服务的 api 调用?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter如何测试多个字段对象的哪些字段为空?

如何使用 dio 从本地主机:3000 切换到准备在 Flutter 中生产的东西?

Flutter App:如何从 Visual Studio 代码构建 testflight

如何在 Dart/Flutter 上的测试中导入测试实用程序文件

Flutter [local_auth] 不适用于 Android <28

如何在 Flutter 小部件测试中等待未来完成?