在Android nativescript

时间:2016-12-28 03:18:04

标签: javascript android angular mobile nativescript

我正在尝试从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服务器。请求甚至没有命中服务器。

感谢任何帮助。

感谢。

2 个答案:

答案 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