所以我遇到了一个可能是典型的问题,尽管似乎有一些相关的问题和答案here和here,但它们并不完全适用于我的问题。
我有一个正在运行的本地django服务器(localhost:8000)。 我想通过将Nativescript / Vue与Axios进行http调用,轻松开发一个与我的django服务器连接的Nativescript移动应用程序。我更喜欢在ios中开始开发/测试。使用Nativescript进行开发时,我有两种选择-使用“ tns run ios”在Mac上启动ios模拟器,或者使用“ tns Preview”通过我的实际iphone进行测试。
当我通过axios对http://localhost:8000/myapi进行基本调用时,该调用会产生http状态结果为null。
我尝试使用我的Mac的本地IP地址-即,不是本地主机,而是使用本地192.168.xx.xx地址进行通话,但这没用
我终于能够使用./ngrok将其本地服务器传输到外部IP地址,从而使其正常工作。现在可以使用,但是由于IP地址可能会不时更改,因此这并不理想。
使用Nativescript预览或运行ios模拟器轻松连接到本地api服务器的建议解决方案是什么?
答案 0 :(得分:1)
仿真器API路径:-http://10.0.2.2:5000。就像您的API本地路径是http://198.168.1:5000/api或http://localhost:5000/api,然后替换为http://10.0.2.2:5000/api,并且端口地址与您的本地API端口相同。
路径- App_resources / Android / src / main / AndroidManifest.xml:-
android:usesCleartextTraffic =“ true” 添加应用程序标记
iOS文件路径- App_Resources / iOS / Info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>10.0.2.2:5000</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
答案 1 :(得分:0)
如@Manoj所述,您需要在为iOS定义的here的仿真器设置中允许使用http。
此外,如果您使用的是django,则还必须执行以下操作:
确定您的本地IP地址(通过用于Mac的ifconfig)
您在settings.py中允许的主机包含此IP地址-例如,ALLOWED_HOSTS = ['192.168.14.14','localhost','127.0.0.1']-其中192.168.14.14是您的本地IP地址< / p>
您以该IP地址而不是本地主机的身份启动服务器-例如python manage.py runserver 192.168.14.14:8000
这将同时适用于模拟器(tns运行ios)和手机上的游乐场(tns预览)