Абонент внутри абонента не работает должным образом в проекте ioni c - PullRequest
0 голосов
/ 04 марта 2020

Я занимаюсь разработкой приложения c для android. Я делаю http запрос глобально и на основе ответа я обрабатываю этот запрос на странице. Например, если в заголовке ответа не указан ключ авторизации, я отправлю сообщение об ошибке в глобально объявленном классе обслуживания.

здесь метод подписчика страницы-

this.loginService.login(params)
  .subscribe(resp => {
      //processing response
   },
    error => {
      this.alertService.presentToast(AppConstants.NETWORKERRMSG);
      this.loading.dismiss();
    }

middle ( login-Service *) 1007 *) служба для вызова службы http-

         login(params){
          return this.netHelper.post('/method',
          { params } ) }

и метод глобальной службы http в netHelper class-

  post(url: string, params: any) {
   var response: any ;
    this.http.post<any>(url, params,
     {headers})
        }).subscribe(data => {
           console.log(data.status);
           console.log(data);
           response = data;

        },
    error => {
      console.log(error.status);
      console.log(error.error); // error message as string
      console.log(error.headers);

    });
    return response;
  } 

1 Ответ

0 голосов
/ 05 марта 2020

попробуйте изменить метод post в классе netHelper следующим образом, он будет работать, как и ожидалось, -

   let respbody: any = '';
   post(url: string, params: any) {

    return this.http.post(url, params,
      {
        headers: headers,
        observe: 'response'
      }).
      map(data => {
        let respbody: any = '';
        let resp: any = data;
        if (resp.status == '200') {
            respbody = resp.body;
        }
        else if (resp.status === '401') {
          this.alertService.presentToast(SECURITYMSG);
        }
        else {
          this.alertService.presentToast(NETWORKERRMSG);
        }
        return respbody;
      });
  }
...