Ionic POST: собственный HTTP возвращает ERROR null



Я пытаюсь заставить простое приложение работать на iOS с Ionic.

Приложение содержит простую кнопку для выполнения запроса POST к моему сервлету, расположенному на моем сервере, с функцией логин (имя пользователя, пароль).

Сначала я подумал, что это проблема на стороне сервера, поэтому я попытался выполнить POST через ПО POSTMAN.
Результат был идеальным, и ответ был в формате JSON.
Но когда я пытаюсь сделать это на своем iPhone, собственный компонент http выдает ошибку, в которой все значения равны нулю.

Я думаю, это как-то связано с моим машинописным кодом. Вы можете мне помочь?

Мой машинописный код:

    import { Component } from '@angular/core';
    import { IonicPage, NavController, NavParams } from 'ionic-angular';
    import { TabsPage } from '../tabs/tabs';
    import { HTTP } from '@ionic-native/http';
    import 'rxjs/add/operator/map';
    import { Storage} from '@ionic/storage';
    import { ShareService } from '../../services/share/share';



    @IonicPage()
    @Component({
      selector: 'page-login',
      templateUrl: 'login.html',
    })
    export class LoginPage {

      static readonly SERVER_ADDRESS  = 'http://example.com';

      constructor(public navCtrl: NavController, public navParams: NavParams, private http: HTTP, private storage:Storage, private shareService: ShareService) {
        this.storage.ready().then( () => {
          this.storage.get("user").then( (user) => {
            if( user !== null){
              console.log(shareService.getUserName());
              shareService.setUser(user.firstName,user.lastName,user.username,user.customer);
              this.navCtrl.push(TabsPage);        
            }
          });
        });
      }

      ionViewDidLoad() {
        console.log('ionViewDidLoad LoginPage');
      }

      login(username,password){

        var body = {
          username: username.value,
          password: password.value
        }
        let header:any = {
          'Content-Type': 'application/json'
        }

this.http.setDataSerializer('json');   
this.http.post(LoginPage.SERVER_ADDRESS+'/external/MobileLoginServlet',body,header).then(
          data => {
            var response = JSON.parse(data.data);
            let user = response[0];
            user.customer = 3;
            user.firstname = "Christian";
            user.lastName = "Prellwitz";
            console.log(user);
            this.storage.ready().then( () =>{
               this.storage.set("user",user); 
            });
            this.navCtrl.push(TabsPage);    
          }).catch(error =>{
            console.log(error);
            console.log(error.status);
            console.log(error.error);
            console.log(error.headers);
          });

      }

    }

Моя CORS сервлета:

response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");

Что возвращает компонент http:

[app-scripts] [11:19:53]  console.log: [object Object]
[app-scripts] [11:19:53]  console.log: null
[app-scripts] [11:19:53]  console.log: null
[app-scripts] [11:19:53]  console.log: null


Заранее благодарим за помощь.


person Splekke    schedule 18.08.2018    source источник


Ответы (1)


Оказывается, что-то было не так в том, что я сделал во время успеха. Кажется, что собственный HTTP-компонент Ionic улавливает каждую ошибку, которая происходит внутри.

Решение в том, что я изменил "let user = response [0];" в «let user = response.data [0];»

В любом случае, спасибо за ваше время и помощь.

person Splekke    schedule 18.08.2018