离子从URL获取数据

时间:2018-08-03 08:53:48

标签: angular cordova ionic-framework ionic3

你好,这是我的离子信息,

enter image description here

我正在尝试从url返回json对象的数据中获取数据。但是我正在使用@angular/http。在浏览器(ionic serve)中执行时,这是完美的工作方式。但是当我在真正的android设备上运行此apk时,数据不是从url获得的。 这是我的代码,

 this.http.get('https://example.com/api?search='+this.searchInput.value).map(res => res.json()).subscribe(data => {
      this.postalCode = data.data;
  },error => { 
    let alert = this.alertCtrl.create({
      title: 'error',
      subTitle: error,
      buttons: ['Dismiss']
    });
    alert.present();
  });

我的config.xml,

    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />

我的错误是

enter image description here

请让我知道这里需要进行任何配置吗?

1 个答案:

答案 0 :(得分:0)

在离子中,

  

如果将浏览器用作测试环境,则必须启用   使用此功能后,浏览器中的跨域资源共享。

这是我解决此问题的方法,

import { Http } from '@angular/http';
import { HTTP } from '@ionic-native/http';

export class HomePage {
  ServerData: any;

  constructor(
    private HttpAngularProvider: Http,
    private HttpNativeProvider: HTTP,
    .....

  ) {
    this.getPostalCodeFromServer();
  }


  getPostalCodeFromServer() {
    if (this.platform.is('android') || this.platform.is('ios')) {

      this.HttpNativeProvider.get('your_url', {}, { "Content-Type": "application/json" })
        .then(data => {
          var dataReturn = JSON.parse(data.data);
          this.ServerData = dataReturn.data;
        })
        .catch(error => {

        });
    } else {
      this.HttpAngularProvider.get('your_url').map(res => res.json()).subscribe(data => {
        this.ServerData = data.data;

      }, error => {

      });
    }
  }

在实际设备中,您需要通过ionic-native发出http请求。否则您不会获取数据。