【问题标题】:Ionic - HTTP POST request not working on native Android but working on Ionic DevappIonic - HTTP POST 请求不适用于本机 Android,但适用于 Ionic Devapp
【发布时间】:2018-11-09 04:59:00
【问题描述】:

我正在尝试在我的 ionic 应用程序中使用 ionic 本机 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 运行该请求时,该请求运行良好。

仅供参考,我的 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 请求。谢谢。

【问题讨论】:

  • 如果你使用这个plugin,它不会在浏览器中运行,但会在你的 ionic 开发应用程序上运行
  • 你能详细说明你的意思吗?我对在浏览器中运行它不感兴趣我想将它作为原生 android 应用程序运行
  • 你在你的应用中使用这个plugin吗?
  • 我正在使用那个插件
  • 你能用 ionic devapp 试试你的应用吗,我最近才用这个插件应该可以工作

标签: android cordova http ionic-framework ionic3


【解决方案1】:

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

请回复结果。

【讨论】:

  • 我有,请求持续了大约一分钟,然后超时。我在控制台中收到 POST http://192.168.0.126:8080/index.php/Login net::ERR_CONNECTION_TIMED_OUT 消息。
  • 您是否尝试通过手机浏览器访问此网址?在我看来,您的手机所在的网络/IP 无法访问该网址。这将与您的问题相匹配,因为开发应用程序在完全在手机上运行时通过 pc 运行。检查您的托管设置/端口转发/防火墙等...甚至可能需要使用外部 IP(如果您使用的是 4g)
  • 哇,我没试过。结果发现我使用的 IP 发生了变化。这是我的问题,我现在感觉很愚蠢。先生,您应该得到一些声誉。
【解决方案2】:

尝试替换资源/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>

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2017-08-06
    相关资源
    最近更新 更多