【发布时间】:2019-12-29 15:57:28
【问题描述】:
所以我遇到了可能是一个典型问题,虽然似乎有几个相关的问题和答案here 和here,但它们并不完全适用于我的问题。
我有一个本地 django 服务器 (localhost:8000) 正在开发中运行。 我想通过使用 Nativescript/Vue 和 Axios 来轻松开发一个连接到我的 django 服务器的 Nativescript 移动应用程序来进行 http 调用。我更喜欢在 ios 中开始开发/测试。我有两种使用 Nativescript 进行开发的选择 - 使用“tns run ios”在我的 mac 上调出 ios 模拟器,或者使用“tns preview”让我可以通过我的实际 iphone 进行测试。
当我通过 axios 对 http://localhost:8000/myapi 进行基本调用时,该调用产生的 http 状态结果为 null。
- 我尝试使用环回地址(例如 10.0.2.2 - 我相信它可能适用于 Android 模拟器)但产生了相同的结果。
我尝试使用我的 mac 的本地 IP 地址 - 即,而不是 localhost,使用我的本地 192.168.xx.xx 地址进行呼叫,但这不起作用
我终于能够使用 ./ngrok 将我的本地服务器通过隧道连接到外部 IP 地址。现在可以了,但它并不理想,因为该 IP 地址可能会不时更改。
使用 Nativescript 预览或运行 ios 模拟器轻松连接到我的本地 api 服务器的建议解决方案是什么?
【问题讨论】:
-
你的iOS模拟器/安卓模拟器是独立的虚拟设备,所以点击localhost是不行的,你必须使用机器的本地IP地址。默认情况下,iOS 和 Android (v9 and above) 禁用 Http / 明文通信,您必须启用它们。
-
是的,谢谢 - 我确实知道这一点,并且在我的 Info.plist 中进行了更改,并且如我的第二个项目符号中所述,我一直在尝试连接到我的本地 IP 地址。我终于弄清楚了我的问题。它不是在 Nativescript 方面,而是在 django 方面。对于任何来到此页面寻找答案的人,您的服务器(在本例中为 django 服务器)必须以本地 IP 地址而不是 localhost 启动 - 例如,python manage.py runserver 192.168.14.10:8000(或任何您的本地 IP 地址是)否则无论http/https如何,您都无法连接到服务器。
-
还要注意,此解决方案确实适用于模拟器和我的物理 iphone 上的预览。
-
我有一个类似的问题,并且能够让它在 Rails 应用程序中工作并在 iphone 上进行测试。 ngrok 绝对有效。但是我也可以通过指定 IP 地址来启动我的本地 Rails 应用程序:rails s -b [MY_MAC_IP_ADDRESS] -p 3000,然后相应地修改应用程序中的请求。
标签: mobile nativescript emulation nativescript-vue