Приложение показывает только данные в браузере, в мобильном телефоне не показывает данные - PullRequest
0 голосов
/ 30 октября 2018

У меня проблема с приложением, на мобильном телефоне я могу только войти в систему, но не получить данные из базы данных.

Если я запускаю приложение из браузера, я могу войти в систему и получить данные из базы данных.

Я не знаю, в чем может быть сбой, я все проверил и не вижу, что это может быть не так.

Функция, откуда я вызываю службу:

import { Component } from '@angular/core';
import { NavController, MenuController } from 'ionic-angular';
import { ServiceRestProvider } from '../../providers/service-rest/service-rest';
import { LoadingController } from 'ionic-angular';
import { AlertController, Platform } from "ionic-angular";

@Component({
  selector: 'page-coperativa_resumen',
  templateUrl: 'coperativa_resumen.html'
})
export class ResumenCooperativaPage {
  loading: any;
  resumen: any;
  constructor(public navCtrl: NavController,
    private menuCtrl: MenuController,
    public service: ServiceRestProvider,
    public loadingController: LoadingController,
    private alertCtrl: AlertController) {
    this.getResumen2();

  }

  getResumen2() {

    this.loading = this.loadingController.create({ content: "Buscando información ,espere por favor ResumenMovimientos2..." });
    this.loading.present();
    this.loading.dismissAll();
    console.log("Ejecutando getResumen2");
    this.service.getResumenMovimientos2()
      .subscribe(data => {

        if (data.error) {
          //this.loading.dismissAll();
          // manejo de errores
          this.alertCtrl.create({
            title: "Error",
            subTitle: 'Mensajes: ' + data.error.tostring(),
            buttons: ["OK"]
          }).present();
        } else {
          //this.loading.dismissAll();
          //this.navCtrl.pop();
          this.resumen = data;
        }
      });

  }
}

Мой сервис:

import { HttpClient,HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { AlertController, Platform } from "ionic-angular";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
import { Observable } from 'rxjs/observable';
import * as jwt_decode from "jwt-decode";
import { HttpHeaders } from '@angular/common/http';
import { Storage } from '@ionic/storage';

@Injectable()
export class ServiceRestProvider {

 // Token: any;
  token_full: any;
  constructor(public http: HttpClient,
    private alertCtrl: AlertController,
    private platform: Platform,
    private storage: Storage) {
    console.log('Entrando a ServiceRestProvider Provider y cargar storage');
    this.cargar_storage();
  }

  public activo(): boolean {

    if (this.token_full != "") {
      console.log("true");
      return true;

    } else {
      console.log("false");
      return false;
    }
  }

  ingresar(codigo: string, usuario: string, contrasena: string) {

    const body = JSON.stringify({
      Codigo: codigo,
      Usuario: usuario,
      Password: contrasena
    });

    const headers = new HttpHeaders().set('Access-Control-Allow-Origin', '*')
      .set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT')
      .set('Accept', 'application/json')
      .set('Content-Type', 'application/json; charset=utf-8');

    return this.http.post('http://intsdfca2:84/api/Login', body, { headers: headers})
      .map((resp: any) => {
        let jwt = jwt_decode(resp);
        console.log(jwt);

        let jwt_json1 = JSON.parse(resp);
        this.token_full = jwt_json1["token"];

        if (resp.error) {       
          this.alertCtrl.create({
            title: "Error al iniciar",
            subTitle: jwt['Apellidos'],
            buttons: ["OK"]
          }).present();
        } else {
          //console.log("No hubo error al cargar");
         // this.Token = jwt['Token'];
          this.token_full = jwt_json1["token"];
          this.guardar_storage();
        }
      }, err => {      
        console.log(err);
      }
      );
  }

  private guardar_storage() {
    if (this.platform.is("cordova")) {
      this.storage.set('Token_Full', this.token_full);
    } else {
      if (this.token_full != "") {
        localStorage.setItem("Token_Full", this.token_full);
      } else {
        localStorage.removeItem("Token_Full");
      }
    }
  }

  cargar_storage() {
    let promesa = new Promise((resolve, reject) => {
      if (this.platform.is("cordova")) {
        this.storage.ready()
          .then(() => {
            this.storage.get("Token_Full")
              .then(Token => {
                console.log(Token);
                if (Token != "") {
                  this.token_full = Token;
                }
              })
          })
      } else {
        if (localStorage.getItem("Token_Full") !="") {
          this.token_full = localStorage.getItem("Token_Full");
        }
        resolve();
      }
    });
    return promesa;
  }

  getNovedades(FechaInicial: any, FechaFinal: any) {
    this.alertCtrl.create({
      title: "Token a enviar",
      subTitle: 'Mensajes: ' + localStorage.getItem("Token_Full").toString(),
      buttons: ["OK"]
    }).present();
    const header = new HttpHeaders().set('Access-Control-Allow-Origin', '*')
      .set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT')
      .set('Accept', 'application/json')
      .set('Content-Type', 'application/json; charset=utf-8')
      .set('Authorization', localStorage.getItem("Token_Full").toString())
      .set('Authorization', 'Bearer ' + localStorage.getItem("Token_Full").toString());
    return new Promise(resolve => {
      this.http.get('http://intsdfca2:84/api/EstadoDeCuenta' + '/12122017/12122018', { headers: header }).subscribe(data => {
        resolve(data);
      }, err => {
        console.log(err);
      });
    });
  }

  getResumenMovimientos2() {
    this.alertCtrl.create({
      title: "Token a enviar",
      subTitle: 'Mensajes: ' + localStorage.getItem("Token_Full").toString(),
      buttons: ["OK"]
    }).present();

    const header = new HttpHeaders().set('Access-Control-Allow-Origin', '*')
      .set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT')
      .set('Accept', 'application/json')
      .set('Content-Type', 'application/json; charset=utf-8')
      .set('Authorization', localStorage.getItem("Token_Full").toString())
      .set('Authorization', 'Bearer ' + localStorage.getItem("Token_Full").toString());

     return this.http.get('http://intsdfca2:84/api/EstadoDeCuenta', { headers: header})
      .map((response) => {
          return response;
      }).catch(this.handleError);;

  }
  public handleError(error: HttpErrorResponse) {
    return Observable.throw(`Something bad happened; please try again later. error Info:  ${error.error.message}`);
  }
  Cerrar_Sesion() {
    this.token_full = null;
    this.guardar_storage();
  }
}

Изображение приложения в браузере: 1

Изображение приложения в мобильном телефоне: 2

Большое спасибо за помощь.

1 Ответ

0 голосов
/ 30 октября 2018

Использовать ионные родные http:

Просто убедитесь, что вы используете ionic native http , и если вы используете angular http, это создаст проблему в устройстве ios / android.

EX:

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

constructor(private http: HTTP) {}

...

this.http.get('http://ionic.io', {}, {})
  .then(data => {

    console.log(data.status);
    console.log(data.data); // data received by server
    console.log(data.headers);

  })
  .catch(error => {

    console.log(error.status);
    console.log(error.error); // error message as string
    console.log(error.headers);

  });

См .: https://ionicframework.com/docs/native/http/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...