cordova-HTTP:最简单的 GET 请求不起作用

cordova-HTTP: most simple GET request not working

我正在尝试使用 cordova 插件 "cordova-HTTP":[=12= 将 GET 请求从我的 Android 模拟器发送到模拟器 运行 所在的笔记本电脑]

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 网络服务器。

自 API 级别 28 默认情况下不允许发送简单的 GET 请求,因为不允许明文流量。所以我将以下内容添加到我的 cordova 项目的 config.xml 中(在 <platform name="android"> 标记内):

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

还要确保在 <widget> 标签内添加 android XML 命名空间,否则上面的方法将不起作用:

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