Форма входа HTTP испорчена на IOS Ionic 3, но работает на Android - PullRequest
0 голосов
/ 12 ноября 2018

Я создаю форму входа, которая отправляет данные в службу входа HTTP. Он очень хорошо работает на устройствах Android, но на IOS он сообщает, что требуется электронная почта, пароль и идентификатор_устройства, поэтому HTTP-запрос не выполняет, а не отправляет данные формы, пока он успешно выполняется в Android с кодом состояния 200. Кто-нибудь знает, почему это происходит?

Функция входа в систему:

onLogin(form: NgForm) {
    console.log('login for is: ', { email: "bexel@edigits.net", password: 
    "Karem@123", device_id: "123" });
    this.userService.login(this.login).then(res => {
        if (res.status = 200) {
            console.log(res);
            if (res.data.user.admin_id) {
                this.storage.set('admin_id', res.data.user.admin_id);
            }
            this.storage.set('token', res.data.token);
            this.storage.set('device_id', this.device.uuid);
            this.storage.set('name', res.data.user.name);
            this.storage.set('account_id', res.data.user._id);
            this.storage.set('picture', res.data.user_picture);
            this.navCtrl.setRoot(StatsPage);
        }
        console.log('stored keys', this.storage.keys());
        this.onDisplayToaster('this is our login response '+ res.status);
    }).catch(e => {
        console.error(e);
        console.log(form.value);
    });
}

Функция входа в службу поддержки пользователей:

login(obj: any) {
    return this.apiService.post('login', obj);
}

API-сервис:

@Injectable()
export class WebApiService {
errorMessage: string;
headers = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}
constructor(
    private http: HttpClient,
    private httpService: HTTP,
    private toastCtrl: ToastController
) { }
private formatErrors(error: any) {
    return Observable.throw(error);
}
get(path: string, params?: HttpParams) {
    return this.httpService.get(`${environment.api_url}${path}`, params, 
this.headers)
        .then(res => {
            JSON.parse(res.data);
            console.log('this is the res', res.data);
            return JSON.parse(res.data);
        }).catch(e => { console.error(this.formatErrors(e)); });
}
    post(path: string, body: Object = {}) {
    return this.httpService.post(`${environment.api_url}${path}`, body, 
    this.headers)
        .then(res => {
            JSON.parse(res.data);
            console.log('this is the res', JSON.parse(res.data));
            return JSON.parse(res.data);
        }).catch(e => { console.error(this.formatErrors(e)); });
  }
}

Журнал консоли:

2018-11-12 08:14:15.834137+0200 bexelApp[1115:17895] ERROR: {"_isScalar":false,"error":{"status":401,"headers":{"server":"Apache/2.4.18 (Ubuntu)","content-type":"application/json","connection":"Keep-Alive","date":"Mon, 12 Nov 2018 06:14:15 GMT","content-length":"125","keep-alive":"timeout=5, max=100","cache-control":"no-cache"},"url":"http://198.211.125.43/bexelapi/mobapi/login","error":"{\"message\":{\"email\":[\"The field is required.\"],\"password\":[\"The field is required.\"],\"device_id\":[\"The field is required.\"]}}"}}
2018-11-12 08:14:15.843486+0200 bexelApp[1115:17895] ERROR: {"__zone_symbol__currentTask":{"type":"microTask","state":"notScheduled","source":"Promise.then","zone":"angular","cancelFn":null,"runCount":0},"line":443,"column":20,"sourceURL":"http://localhost:8080/build/main.js"}

Функция работает на Androidd, но не на IOS, обратите внимание, что я попытался ввести данные для входа в систему как статические, чтобы убедиться в правильности учетных данных для входа, но с тем же результатом.

Я попытался обновить плагин Native HTTP с тем же результатом.

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