Ionic приложение может работать в браузере, но не работает на Ionic DevApp - PullRequest
0 голосов
/ 05 ноября 2019

Я новичок в ионике, пожалуйста, прости меня, если мой вопрос глупый. Во время разработки я использую браузер, чтобы показать и протестировать свое приложение, в котором все работает без каких-либо проблем, но когда я тестирую свое приложение на Ionic DevApp на моем устройстве Android, приложение не может связаться с бэкэндом (REST API). Каждый раз, когда я отправляю запрос (например, запрос на вход в систему), система будет отвечать [object progressevent].

console.log для отображения сообщения об ошибке:

[ng] [console.log]: {
[ng]   "headers": {
[ng]     "normalizedNames": {},
[ng]     "lazyUpdate": null,
[ng]     "headers": {}
[ng]   },
[ng]   "status": 0,
[ng]   "statusText": "Unknown Error",
[ng]   "url": "http://localhost:8080/restapi/api/user/login",
[ng]   "ok": false,
[ng]   "name": "HttpErrorResponse",
[ng]   "message": "Http failure response for http://localhost:8080/restapi/api/user/login: 0 Unknown Error",
[ng]   "error": {
[ng]     "isTrusted": true
[ng]   }
[ng] }

Мое приложение:

Внешний интерфейс: Ионный + Угловой

Backend (REST API): Java Spring MVC, Oracle Developer Database, Hibernate

У меня есть поиск и попытка найти решение на различных онлайн-ресурсах, но, к сожалению, решения, предоставленные другими, не работают в моем сценарии. Таким образом, я отправляю этот вопрос, чтобы попросить о помощи любого из вас, кто является экспертом в области ионной связи. Спасибо.

Мой код для запроса на вход:

this.http.login(this.user)
        .subscribe((userData: any) => {
                console.log('Success login');
                this.http.storeToken(userData.token);
                this.loginForm.reset();
                this.errorMessageService.setValidationErrorMessage('');
                this.exceptionHandlerService.setErrorResponse('');
                console.log(userData);
                this.router.navigate(['']);
            },
            error => {
                if (this.exceptionHandlerService.getErrorResponse() === null || this.exceptionHandlerService.getErrorResponse() === '') {
                    console.log(error);
                    this.exceptionHandlerService.setErrorResponse(error.error);
                }
                console.log(error);
            });

Мой код для службы входа:

userUrl = 'http://localhost:8080/restapi/api/user/';
login(user: User) {
        const body = JSON.stringify(user);
        return this.http.post<User>(this.userUrl + 'login', body, httpOptions);
    }

1 Ответ

2 голосов
/ 05 ноября 2019

Спасибо за помощь, я нашел решение.

Я изменил URL-адрес службы API в коде внешнего интерфейса приложения с localhost на ip-адрес моего компьютера, и теперь все работает.

ОТ:

userUrl = 'http://localhost:8080/restapi/api/user/';

К:

userUrl = 'http://192.164.0.111:8080/restapi/api/user/';

Большой привет к ответу, предоставленному Reaz Murshed: Невозможно подключиться к localhost API из приложения Android

...