Je veux faire une requête HTTP à mon Node-Backend local. J'ai donc configuré mon AndroidManifest.xml et mon network_security_config.xml pour autoriser le trafic HTTP en clair. Mais il semble que mon application NativeScript n'initialise pas correctement 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>

Où le problème apparaît :

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

  constructor(private _client: HttpClient) { }

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

J'utilise la fonction tns preview pour exécuter l'application localement sur mon appareil réel. Je cherche depuis des jours, mais il semble que cleartextTrafficPermitted devrait faire l'affaire. Je n'en ai aucune idée, j'ai même essayé de le réparer en utilisant des certificats SSL auto-signés, mais cela n'a pas non plus fonctionné, alors merci de votre aide.

0
Jannis 30 janv. 2020 à 22:28

1 réponse

Meilleure réponse

Solution : j'ai essayé d'utiliser AppManifest.xml dans tns preview . Mais ce genre de ressources ne sont pas expédiées vers l'aperçu. C'est pourquoi ma configuration n'a pas fonctionné.

0
Jannis 26 févr. 2020 à 12:20