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

问题描述 投票:0回答:4

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

我在服务中呼叫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 {headers:HttpHeaders,status:200,statusText:“OK”,url:“https://google.com/open”,ok:false,...}

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

请帮我

angular http-headers httpresponse angular-httpclient
4个回答
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
});

0
投票

data.status会给你你想要的吗?


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 => {}
        );

0
投票

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

return this._http.get<any>(this.serverUrl+'categories/'+id, { observe: 'response' })
© www.soinside.com 2019 - 2024. All rights reserved.