Ionic-HTTP POST请求不适用于本机Android,但适用于Ionic Devapp

时间:2018-11-09 04:59:00

标签: android cordova http ionic-framework ionic3

我正在尝试使用离子应用程序中的离子本机HTTP模块发出发布请求。当我使用Ionic DevApp运行应用程序时,请求有效,并且应用程序正常运行。当我使用ionic cordova run android --device在设备上本地构建和运行应用程序时,http请求失败。

我一直在尝试其他堆栈溢出问题中列出的一系列选项。我已经安装了cordova-plugin-whitelist,并修改了config.xml以包括所有不同类型的访问源并允许导航。我还确保我的Android清单具有:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

我无所适从,我发现这不是API的CORS问题,因为当我使用ionic serve -c通过Ionic DevApp运行请求时,请求可以正常工作。< / p>

仅供参考,我的API请求如下:

 var headers = {}
 this.http.setDataSerializer('json')
 return this.http.post(API_URL, send_data, {headers: headers})
  .then(data => {
 ...
 }

在我的config.xml文件中,我包括了:

<access origin="*" />
<access origin="*" subdomains="true" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="localhost:8080" />
<allow-navigation href="data:*" />
<allow-intent href="http://*/*" />
<allow-intent href="localhost:8080" />

任何指导将不胜感激,这是一个巨大的时间流失,令人沮丧的是该应用程序功能齐全,并成功地从Ionic DevApp发出了http post请求。谢谢。

2 个答案:

答案 0 :(得分:2)

您是否尝试过连接chrome调试器以查看发布请求失败的原因? 您可以转到chrome:// inspect来完成此操作 您应该能够在那里看到您的应用程序(假设您的手机已连接并且处于开发模式)。 看到您的应用程序后,单击“检查”。这应该会打开一个chrome调试器窗口,让您可以查看网络流量。

请回复结果。

答案 1 :(得分:0)

尝试替换resource / android / xml / network_security_config.xml

使用

<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain>api.mydomain.in</domain>
    </domain-config>
</network-security-config>