В угловых 2+, не удалось захватить данные, поступающие в ответ HttpClient - PullRequest
0 голосов
/ 05 июня 2018

У меня есть URL для нажатия, скажем, http://172.22.xx.xx:port/domain/section. Я использую HttpClient для выполнения http-вызова и могу видеть 200 код состояния на вкладке сети инструмента разработчика вместе с данными json.

Компонент -

this.coreService.getData().subscribe(
      (data) => {
        console.clear();
        console.log('res: ', data);
      },
      (error) => {
        console.clear();
        console.log('err: ', error);
      }
    );

Сервис -

getData() {
    const url = 'http://172.22.xx.xx:8080/domain/section';
    return this.http.get(url);
  }

Проблема в том, что я могу захватить не данныеприходит в ответ, но ошибка, которая имеет HttpErrorResponse формат.

enter image description here

И ответ в этом формате:

enter image description here

Хотите знать, где это происходит?Данные из API поступают в неправильном формате?

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

вам нужно установить заголовки для включения формата json

let headersConfig = {
   'Content-type': 'application/json; charset=utf-8',
   'Accept': 'application/json'
};
let headers = new Headers(headersConfig)

this.http.get(url, headers );
0 голосов
/ 05 июня 2018

Если вы используете HttpClient, сделайте так:

Добавьте Наблюдайте: 'response' в опциях заголовка метода http.get и подпишитесь, чтобы получить ответ и ошибку, а также..

Решение по вашему запросу:

Component.ts

this.coreService.getData().subscribe(
      res => {
        console.clear();
        console.log("Response",res);
        //if you to get response in variable then do 
         this.responsedata = res.body;
      },
      err => {
        console.clear();
        console.log('err: ', err);
      }
    );

Сервис

getData() {
    const url = 'http://172.22.xx.xx:8080/domain/section';
    return this.http.get(url,{observe: 'response'});
  }

Глобальная ошибка обработки

public errorHandler(err: HttpErrorResponse) : Observable<any>
  {
    if (err.error instanceof Error)
    {
      console.error("Client-side error occured.",err.status,err.error.message);
    }
    else 
    {
      console.error("Server-side error occured.",err.status,err.error.message);  
    }

    return ErrorObservable.throw(err || 'ERROR'); //throws error
  }
0 голосов
/ 05 июня 2018

В сервисе попробуйте получить ответ таким образом.

getData() {
    const url = 'http://172.22.xx.xx:8080/domain/section';
    return this.http.get(url).map(response => response.json()); 
}
...