如何从角度http的响应中读取状态?

时间:2018-06-26 19:00:50

标签: angular http-headers httpresponse angular-httpclient

从响应中读取状态代码时遇到了一些问题。

我在服务中调用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状态文本

从上述调用中获得的示例http响应是。

  

HttpErrorResponse {headers:HttpHeaders,status:200,statusText:   “确定”,网址:   “ https://google.com/open”,好的:   错误,…}

如何在控制器中读取状态文本。

请帮助我

4 个答案:

答案 0 :(得分:0)

data.status会给您想要的东西吗?

答案 1 :(得分:0)

您可以将{ observe: 'response' }指定为get请求的第二个参数,从而为您提供完整的响应数据。

如果要与之一起发送其他选项,例如headersparams,只需将所有这些选项汇总在一个对象中即可。

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

Reference

return this.http.get<string>(
    this.remoteServer + '/google.com/open', httpOptions).subscribe((data) => {
        console.log(data.status);     // staus 200
        console.log(data.statusText);  // OK
});

答案 2 :(得分:0)

{observe:'response'}选项限定符可以添加到HttpClient对象的get或put上。应该将其作为附加的逗号分隔字段添加到您可能已定义的任何现有选项中。参见下面的示例,该示例将简单的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 => {}
        );

答案 3 :(得分:0)

我们还可以通过在请求中添加{观察:'响应'}来获得完整的响应。

return this._http.get<any>(this.serverUrl+'categories/'+id, { observe: 'response' })