【问题标题】:Unable to get REST API response in real android device in Ionic无法在 Ionic 的真实 android 设备中获取 REST API 响应
【发布时间】:2018-12-26 06:41:29
【问题描述】:

在 web 浏览器中一切正常,但在真实设备 (Android) 中运行时无法在 debug.apk 中运行。

我在真实设备中没有从 https 服务器得到任何响应,但在浏览器中我得到响应并在 ion-label 中显示数据。

对于浏览器:

ionic serve --lab

对于安卓调试apk:

ionic cordova build android

config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>NABH</name>
    <description>An awesome Ionic/Cordova app.</description>
    <author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>
    <content src="index.html" />
    <allow-intent href="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <allow-navigation href="*" />
    <access origin="*" />
    <allow-navigation href="http://*/*" />
    <allow-navigation href="https://*/*" />
    <allow-navigation href="data:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="300" />
    <preference name="loadUrlTimeoutValue" value="600000" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="orientation" value="portrait" />
    <platform name="android">
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
.......

按照一些教程链接并在index.html文件中添加以下行,

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

ionic.config.json 文件:

{
  "name": "NXXX",
  "app_id": "",
  "type": "ionic-angular",
  "integrations": {
    "cordova": {}
  },
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "https://www.testapi.com/mobileapi"
    }
  ]

}

ts 文件:

return new Promise(resolve => {
      const myheader = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
      this.http.get("https://www.testapi.com/mobileapi",{headers:myheader}).subscribe(data => {
        resolve(data);
      }, err => {
        console.log(err);
      });
    });

环境信息: cli 包:(/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0

全局包:

cordova (Cordova CLI) : 8.0.0

本地包:

@ionic/app-scripts : 3.1.9
Cordova Platforms  : android 7.0.0
Ionic Framework    : ionic-angular 3.9.2

系统:

Android SDK Tools : 26.1.1
Node              : v8.11.1
npm               : 5.6.0
OS                : macOS High Sierra
Xcode             : Xcode 7.2.1 Build version 7C1002

不过,我仍然卡在真实设备中的 api 响应中。请让我知道我将如何在 android 设备中获得 JSON 响应?

【问题讨论】:

    标签: angular typescript cordova ionic-framework


    【解决方案1】:

    这可能是 CORS 问题,您应该检查您的后端是否激活了 CORS。

    如果在浏览器中一切正常,我看不到其他方法。

    【讨论】:

    • 如何检查 CORS 是否在后端被激活?
    • @pb123 这个后端是你的吗?
    • 对于 CORS 问题,我在 ionic.config.json 文件中添加了 proxyUrl,例如 , "proxies": [ { "path": "/api", "proxyUrl": "example.com " } ]
    • @pb123 然后你必须在控制台中检查发生了什么,将手机连接到计算机并在谷歌浏览器中检查你的应用程序ionic.zone/debug/remote-debug-your-app#android
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多