Ionic get httpClient - PullRequest
       20

Ionic get httpClient

0 голосов
/ 08 декабря 2018

Возврат HttpClient не годится, почему?

Какая рекомендация по использованию HttpClient?

Отображение ошибок (Login.ts)

Error return

Мой код (Login.ts)

let body = new URLSearchParams();
  body.set('email', this.email);
  body.set('password', this.password);

 this.httpClient.post('https://example.com/user/auth', body.toString(), {headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}})
 .map(res => res.json())
  .subscribe(
    data => {
      this.result = res;
    },
    err => {
      this.result = err;
      this.password = "";
    }
  );

Моя конфигурация

Ionic:

   ionic (Ionic CLI)  : 4.5.0 (/usr/local/lib/node_modules/ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.1

Cordova:

   cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms     : ios 4.5.5
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.1, (and 6 other plugins)

System:

   NodeJS : v10.14.1 (/usr/local/bin/node)
   npm    : 6.4.1
   OS     : macOS Mojave

Спасибо

1 Ответ

0 голосов
/ 09 декабря 2018

Обычно, когда вы получаете эту ошибку без правильного кода состояния (статус: 0), это означает, что запрос не смог получить ответ.Это может произойти по многим причинам, например, из-за того, что не удалось создать соединение для запроса или из-за политики CORS.

Чтобы выяснить, какая из них является проблемой

  1. Проверьте консоль в Google Chrome или Firefoxдля сообщения console.error, похожего на URL ', было заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».'
  2. Создайте запрос с помощью команды curlв вашем терминале или используйте почтальон, чтобы узнать, не выполнен ли запрос.

Кстати, я вижу, что вы можете изменить в своем коде.

  1. в ionic-angular 3.9.2 больше не нужно разбирать res.json() с картой.это уже разобрано.Поэтому удалите это.
  2. в подписке у вас есть данные в качестве имени параметра, но вы присвоили this.results res .Это должно быть data .

this.httpClient.post('https://example.com/user/auth', body.toString(), {headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'}})
.subscribe((data) => {
  this.result = data;
}, (err) => {
  this.result = err;
  console.error(err);
  this.password = '';
});
...