Cordova-HTTP: самый простой запрос GET не работает - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь отправить запрос GET из моего Android эмулятора на ноутбук, на котором запущен эмулятор, используя плагин cordova "cordova-HTTP":

cordovaHTTP.get(
            "http://10.0.2.2:80/",
            {},
            {},
            function(response) {
                console.log('success called');
            },
            function(error_response) {console.log('error called'); console.log(error_response.status);}
        );

Обратный вызов ошибки вызывается и код состояния 500 (= внутренняя ошибка сервера). Но на моем ноутбуке я вижу с tcpdump, что пакеты даже не принимаются. Почему этот очень простой запрос GET не работает?

Когда я использую Google Chrome на эмуляторе и перехожу к "http://10.0.2.2: 80 / ", все работает нормально , я вижу фиктивную страницу веб-сервера Apache2, установленного на моем ноутбуке.

1 Ответ

0 голосов
/ 09 апреля 2020

Начиная с уровня API 28, по умолчанию запрещено отправлять простые запросы GET, поскольку трафик с открытым текстом c не разрешен. Поэтому я добавил следующее в конфигурацию. xml моего проекта cordova (внутри тега <platform name="android">):

<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application"> 
<application android:usesCleartextTraffic="true" /> 
</edit-config>

Также обязательно добавьте пространство имен android XML внутри вашего * Тег 1005 *, иначе вышеприведенное не сработает:

xmlns:android="http://schemas.android.com/apk/res/android"
...