IONIC 4和PHP在无法生成apk的情况下

时间:2019-11-01 05:28:10

标签: php mysql angular ionic-framework ionic4

我已经在ionic 4中制作了一个应用程序,该应用程序连接到php文件,该文件使在msql中插入数据的功能一切正常,但是在编译时它在Androd 9中不起作用,无法发送数据或连接到服务器。我记得很久以前我做了一些工作,使其无法工作,但我不再拥有源代码,我记得我放了一些“ HEADER”,但不知道在哪里。

这是我的ts文件

'''
    import { Component, OnInit } from '@angular/core';
    import { HttpClient } from '@angular/common/http';
    import { AlertController } from '@ionic/angular';
    import { NavController } from '@ionic/angular';
    @Component({
      selector: 'app-factura',
      templateUrl: './factura.page.html',
      styleUrls: ['./factura.page.scss'],
    })
    export class FacturaPage implements OnInit {

      constructor(private http: HttpClient,public alertController: AlertController,public navCtrl: NavController) { }

      ngOnInit() {
      }

      datos: any = {};
    apiUrl='http://072atizapan.mx/index.php'

    logForm() { 
      let newData={
        funcion: 'correo2',
        datos: this.datos
      }

      this.http.post(this.apiUrl, JSON.stringify(newData))
      .subscribe(data=>{
        if(data=='true'){
          console.log('return');
          this.presentAlert();
        }else{
          this.presentAlert();
          this.navCtrl.navigateForward('/');

        }
      },
      (err)=>{
        this.presentAlert();
        this.navCtrl.navigateForward('/');
      }
      );
    }

这是我的php

<?php
    header("Content-Type: application/json; charset=UTF-8");
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS");
    header("Access-Control-Allow-Headers: Accept-Encoding, X-Requested-With, Content-Type, Origin, Accept, Authenticationtoken");

    if($_SERVER['REQUEST_METHOD'] !== 'POST'){
    echo json_encode(array('status' => false));
    exit;
       }

$postdata = file_get_contents("php://input");

$datos=json_decode($postdata, true);

switch ($datos['funcion']) {
    case 'correo2':
        getMenu($datos);
        break;
}

我已经尝试使用白名单并在android上添加权限,但是它对我不起作用。我确信php是有用的,因为根据我的说法,我已经用过错在TS部分 有什么想法吗?

ANDORID CONFING

<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">http://xxxxmx/</domain>
        <domain includeSubdomains="true">http://xxxx/index.php</domain>
    </domain-config>
</network-security-config>


<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" />

解决方案:

<uses-sdk android:targetSdkVersion="27" />

<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" />



<network-security-config>
   <base-config cleartextTrafficPermitted="true">
       <trust-anchors>
           <certificates src="system" />
       </trust-anchors>
   </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">http://XXX.mx/index.php</domain>
       <domain includeSubdomains="true">http://XXXX.mx</domain>
       <domain includeSubdomains="true">http://XXXX.mx/SAPASA/>
      <domain includeSubdomains="true">http://XXXX.mx/>
    </domain-config>
</network-security-config>

2 个答案:

答案 0 :(得分:0)

使用https://代替http:// android更新了其安全策略,这就是为什么在最新的操作系统中不支持http:// URL调用。

快乐编码:-)

答案 1 :(得分:0)

使用Https://而不是http://可以正常工作,现在,最新的操作系统不支持http:// URL,我的情况可以使用。