我正在尝试从nativescript向常规http(而不是https)服务器发出http请求。
let headers = new Headers();
headers.append("Content-Type", "application/json");
this.http.request(
"http://localhost:3050/register",
{
method: "POST",
headers: headers,
body: JSON.stringify({
username: user.username,
email: user.email,
password: user.password
})
})
当发送到https服务器时,该请求工作得很好,但是当建立到http服务器(我正在运行的服务器)时,它将无法正常工作。
在iOS中,我不得不在info.plist文件中添加以下内容,以便允许对http服务器的请求,之后它运行正常:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
然而,在Android中,请求仍然无效,我找不到任何有关我需要进行的更改的文档,以便将请求发送到http服务器。请求甚至没有命中服务器。
感谢任何帮助。
感谢。
答案 0 :(得分:2)
Localhost表示您正在运行的设备。使用Android时,您的环回地址不再是标准的127.0.0.1(又名 localhost ),而是类似于10.0.2.2(根据您使用的是AVD还是GenyMotion)
更多here
您还可以use similar solution进行跨平台解决方案
答案 1 :(得分:2)
我从{p>修改了AndroidManifest.xml
中的app\App_Resources\Android\src\main
<application
android:name="com.tns.NativeScriptApplication"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
到
<application
android:name="com.tns.NativeScriptApplication"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
我添加了最后一行:android:usesCleartextTraffic="true"
然后它起作用了!
请参阅:https://www.nativescript.org/blog/secure-your-mobile-app-securing-data-in-transit