【问题标题】:ionic 5 Ionic/Angular cannot make http request in android emulator(net: ERR_CONNECTION_REFUSED)ionic 5 Ionic/Angular 无法在 android 模拟器中发出 http 请求(网络:ERR_CONNECTION_REFUSED)
【发布时间】:2020-12-05 13:54:07
【问题描述】:

我已经在我的 rest API 中启用了 cors。我可以在浏览器中成功发出请求,但是当我在 android studio 中使用此命令“ionic cap run android --livereload --external”运行我的应用程序时,我无法从我的 api 获得任何响应。检查控制台时出现以下错误“net:ERR_CONNECTION_REFUSED”

console error

【问题讨论】:

  • 我已经这样做了,仍然无法提出请求
  • 会出现什么错误?
  • @NajamUsSaqib 兄弟这也是我的问题,我无法在 android studio 中记录任何错误,所以我盲目地解决了这个问题。我曾尝试在 chrome 中使用远程调试,但我看不到我的设备
  • 您是否在移动设备中启用了开发者选项?

标签: ionic-framework


【解决方案1】:

如果您想在 Android Studio 上测试您的应用并且您的 API 在 localhost 上运行,您需要将请求发送到 10.0.2.2 而不是 localhost。在您的情况下,不要在 Ionic 应用程序中使用基本 API URL http://localhost:3000,而是使用 http://10.0.2.2:3000

接下来,在 AndroidManifest.xml 文件中的应用程序元素中添加android:networkSecurityConfig="@xml/network_security_config"

<application
    android:networkSecurityConfig="@xml/network_security_config"

您将需要您的 IPv4 地址。打开命令提示符,输入 ipconfig 并记下 IPv4 地址。

在路径 android\app\src\main\res\xml 中创建一个名为 network_security_config.xml 的文件,并将 ipv4address 替换为您的 IPv4 地址:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">10.0.2.2</domain>
        <domain includeSubdomains="true">ipv4address</domain>
    </domain-config>
</network-security-config>

最后,使用以下命令运行您的应用:

ionic cap run android -l --host=0.0.0.0

来源:https://developer.android.com/studio/run/emulator-networking.html

【讨论】:

    【解决方案2】:

    您必须在 config.xml 中设置android:usecleartexttraffic 属性。

    <platform name="android">
            <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
                <application android:networkSecurityConfig="@xml/network_security_config" />
                <application android:usesCleartextTraffic="true" />
            </edit-config>
    ...
    </platform>
    

    另外,您必须在 network_security_config.xml 中添加 RestAPI 的子域

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">localhost</domain>
            <domain includeSubdomains="true">127.0.0.1</domain>
        </domain-config>
    </network-security-config>
    

    【讨论】:

    • 问候我在上面添加的配置仍然得到“net:ERR_CONNECTION_REFUSED”,
    • 我可以看看你添加的xml文件吗?您是否尝试过通过 Android SDK 运行它?
    猜你喜欢
    • 2020-11-06
    • 2018-09-11
    • 2017-11-07
    • 2018-10-03
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    相关资源
    最近更新 更多