Как прочитать статус из ответа в угловых http? - PullRequest
0 голосов
/ 26 июня 2018

Возникает проблема с чтением кода состояния из ответа.

Я звоню API в сервис,

return this.http.get<string>( this.remoteServer + '/google.com/open', httpOptions);

В моем контроллере у меня есть,

open() {
    this.openService.open(this.selected.qrCode)
    .subscribe(
      data => {
       console.log(data);
       this.toastService.showSuccess('Unlock Successfull', 'success');
      }
    );
  }

Теперь я хочу прочитать http statustext,

пример ответа http, который я получаю от вышеуказанного вызова:

HttpErrorResponse {заголовки: HttpHeaders, статус: 200, статус текст: "ОК", URL: "https://google.com/open", хорошо: ложь, ...}

Как читать текст состояния в контроллере.

Пожалуйста, помогите мне

Ответы [ 4 ]

0 голосов
/ 19 апреля 2019

Мы также можем получить полный ответ, добавив {наблюдаем: 'ответ'} в нашем запросе.

return this._http.get<any>(this.serverUrl+'categories/'+id, { observe: 'response' })
0 голосов
/ 26 июня 2018

Вы можете указать { observe: 'response' } в качестве второго параметра для запроса get, который дает вам полные данные ответа.

Если вы хотите отправить вместе с ним другие опции, такие как headers или params, просто сверните их все в один объект.

const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json'}), params : myParams, observe: 'response'}

Ссылка

return this.http.get<string>(
    this.remoteServer + '/google.com/open', httpOptions).subscribe((data) => {
        console.log(data.status);     // staus 200
        console.log(data.statusText);  // OK
});
0 голосов
/ 22 января 2019

К объекту HttpClient можно добавить спецификатор параметров {Наблюдение: 'ответ'}. Его следует добавить в качестве дополнительного поля, разделенного запятыми, к любым существующим параметрам, которые вы могли определить. Ниже приведен пример простого оператора Put, модифицированного для возврата полного содержимого http. Это можно использовать для стандартных отчетов о состоянии в вашем приложении.

    body = this.currentDocument;

    let url = environment.base_url + 'api/Document/updateDocument';

    // For a put the options block is the third parameter. For a get this would be the second
    this.httpClient.put(url, body,
        {
            headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
            withCredentials: true,
            // Add the observe block to the existing option parameters
            observe:'response'
        })
        .subscribe(
            response => {

                statusMessage = new StatusMessage();
                statusMessage.HttpStatus = response.status;
                statusMessage.StatusText = response.statusText;

                // This example uses an EventEmitter but you could do any kind of logging here
                this.updateStatusPanel.emit(statusMessage);
                // The JSON body of this response can be accessed via the response.body parameter
            },
            err => {}
        );
0 голосов
/ 26 июня 2018

Даст ли data.status то, что вы хотите?

...