HTTP-запрос Ionic 3 не работает на IOS, но работает на Android? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть приложение Ionic 3, которое вызывает API-интерфейс Spring Boot для входа в мобильное приложение. Мое приложение Spring Boot размещено на Aws.Он работает на Android, но на ios не работает, говорит «Кросс-выпуск», я пробовал много Решения из интернета Но не получил результат.

Я получаю ошибку

ответ со статусом: 0 для URL: ноль

это мой рабочий пружинный контроллер загрузки

@CrossOrigin
@RestController
@RequestMapping("/api/customerr")
public class loginController  extends NamedParameterJdbcDaoSupportClass{

    @Autowired
    LoginService loginService; 

    @Autowired
    LoginValidation loginValidation; 


    @RequestMapping(value="/getUser", method = RequestMethod.POST)
    public Response getUsers( @RequestBody UserRequest  userRequest ) throws Exception {
        List<User> users = null;
        try {
            loginValidation.getUsers(userRequest.getSsoid(), userRequest.getPassword() );
        } catch (ValidationExceptions ex) {
            ex.printStackTrace();
            return new Response("400", ex.getMessage());
        }

        try {
            users = loginService.getUsers(userRequest.getSsoid(),userRequest.getPassword() );
        } catch (Exception ex) {
            return new Response("400", ex.getMessage());
        }
         for(User u: users )
         {
            if(u.getStatus().getStatusId() == 2)
            {
                return new Response("300", u.getSsoid());   
            }   

         }   
        return new Response("200", users);
    }



}

это мой ионный провайдер / сервис

import { Http, Response} from '@angular/http';
import { Injectable } from '@angular/core';



@Injectable()
export class loginService {

 data:any;

    constructor(public http : Http){}




    getAllUsers(authData){
        alert("api users")

        return new Promise(resolve=>{
            this.http.post('http://someAddress:8080/api/customerr/getUser', authData)
            .map(res=>res.json())
            .subscribe(data=>{
                this.data=data;
                resolve(this.data)
            })
        })


    }


}

Это страница входа, где я звоню API

import { Component, ViewChild } from '@angular/core';
import { Alert,AlertController,IonicPage,Loading,LoadingController,NavController,MenuController } from 'ionic-angular';
import { FormBuilder, FormGroup, Validators, NgForm } from '@angular/forms';
import { EmailValidator } from '../../validators/email';
import { CustomerPage } from '../customer/customer';
import { loginService } from '../../providers/loginservice/login.servie';
import {Response} from '@angular/http';
import { ToastController } from 'ionic-angular';
import { CustomerdetailsPage } from '../customerdetails/customerdetails';
@IonicPage()
@Component({
  selector: 'page-login',
  templateUrl: 'login.html',
})
export class LoginPage { 

  @ViewChild('f') loginForm: NgForm;

  loginResponse:any;
  constructor(
    public navCtrl: NavController,
    public loadingCtrl: LoadingController,
    public alertCtrl: AlertController,
    public menu:MenuController,
    private loginservice : loginService,
    private toastCtrl: ToastController

  ){


    }


  ionViewWillEnter(){
    this.menu.enable(false)
  }

  ionViewWillLeave(){
    this.menu.enable(true)
  }



     loginUser() {
      console.log("login data");
       console.log(this.loginForm.value);

       this.loginservice.getAllUsers(this.loginForm.value).then(

            (data:any) => 
            {
              this.loginResponse = data.json();
              alert("data");
              alert(this.loginResponse.code);
              if(this.loginResponse.code === '200')
              {
                        if(this.loginResponse.data.length !== 0)
                        {



                           let key1 = 'islogIn';
                           localStorage.setItem(key1, "true");


                          this.navCtrl.setRoot(CustomerPage);                       
                        }
                         else if(this.loginResponse.data.length == 0)
                        {

                            let toast = this.toastCtrl.create({
                              message: 'invalid username or password',
                              duration: 3000,
                              position: 'bottom'
                            });

                            toast.onDidDismiss(() => {
                              console.log('Dismissed toast');
                            });

                            toast.present();

                        }

              }
             else if (this.loginResponse.code === '300')
                        {


                          let toast = this.toastCtrl.create({
                            message: 'user is deactivated',
                            duration: 3000,
                            position: 'bottom'
                          });

                          toast.onDidDismiss(() => {
                            console.log('Dismissed toast');
                          });

                          toast.present();

                        }
            },
            (error)=>{
              alert(error);
            }




          );



    }


}

А это app.module.ts

@NgModule({
  declarations: [
    ..
    LoginPage,
  ...


  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    HttpModule,
    IonicStorageModule.forRoot(),
    IonicModule.forRoot(MyApp),
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    .
    .
    LoginPage,
    .
    .
  ],
  providers: [
    Network,
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    Storage,
    SocialSharing,
    File,
    FileOpener,
    DatabaseProvider,
    SQLitePorter,
    SQLite,
    GlobalProvider,
    PageserviceProvider,
    loginService,
    syncService

   ]
})
export class AppModule {}

1 Ответ

0 голосов
/ 04 мая 2018

Пожалуйста, используйте собственный HTTP API для IOS

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

...