NativeScript CleartextHTTPTrafficNotPermitted

NativeScript CleartextHTTPTrafficNotPermitted

我想向我的本地节点后端发出 HTTP 请求。因此,我将 AndroidManifest.xml 和 network_security_config.xml 配置为允许明文 HTTP 流量。但似乎我的 NativeScript 应用程序没有正确初始化 AndroidManifest.xml.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="__PACKAGE__"
    android:versionCode="1"
    android:versionName="1.0">

    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"/>

    <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="__APILEVEL__"/>

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:name="com.tns.NativeScriptApplication"
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:debuggable="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:usesCleartextTraffic="true" >

        <activity
            android:name="com.tns.NativeScriptActivity"
            android:label="@string/title_activity_kimera"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode"
            android:theme="@style/LaunchScreenTheme">

            <meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.tns.ErrorReportActivity"/>
    </application>
</manifest>

network_security_config.xml:

<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">192.168.178.52</domain>
        <trust-anchors>
            <certificates src="@raw/selfsigned"/>
        </trust-anchors>
    </domain-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/selfsigned"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

出现问题的地方:

private readonly URL = 'http://192.168.178.52:3000/';

  constructor(private _client: HttpClient) { }

  _getStrips(): Observable<any> {
    return this._client.get(this.URL + 'leds');
  }

我正在使用 tns preview 功能在我的真实设备上本地 运行 应用程序。 我已经搜索了好几天,但似乎 cleartextTrafficPermitted 应该可以完成这项工作。 我不知道,我什至尝试使用自签名 SSL 证书来修复它,但这也没有用,所以感谢您的帮助。

解决方案: 我试过在 tns preview 中使用 AppManifest.xml 。但是这些类型的资源不会发布到预览版中。这就是我的配置不起作用的原因。