获取状态码http.get response angular2

Mau*_*zzo 12 http-status-codes typescript angular2-services angular

我需要获取以下http调用的状态代码并将其作为字符串返回

//This method must return the status of the http response
confirmEmail(mailToken):Observable<String>{

     return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken)
                     .map(this.extractData)
                     .catch(this.handleError);

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

FRE*_*CIA 22

添加Angular> = 4.3(包括7)版本的答案HttpClient,替换为newhttp

import {HttpClientModule} from '@angular/common/http'; // Notice it is imported from @angular/common/http instead of @angular/http
Run Code Online (Sandbox Code Playgroud)

如何获取响应代码或任何其他标头:

http.get(
   `${this.baseUrl}users/activate?mailToken=${mailToken}`,
    {observe: 'response'}
)
  .subscribe(response => {

    // You can access status:
    console.log(response.status);

    // Or any other header:
    console.log(response.headers.get('X-Custom-Header'));
  });
Run Code Online (Sandbox Code Playgroud)

检查文档

  • 必须明确的是,要获取完整的http响应对象,此处的决定因素是'{observe:'response'}',然后您可以相应地返回完整的响应。 ,您将无法获得完整的响应,只有身体数据。 (3认同)

Kar*_*538 9

只需将您的代码修改为以下内容即可将responseStatus存储在字段中:

responseStatus: number;

//This method must return the status of the http response
confirmEmail(mailToken):Observable<String> {
//Edited for working with HttpClient on Angular >= 4.3
  return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken, {observe: 'response'})
                 .map((response: Response) => {
                   this.responseStatus = response.status;
                   return this.extractData(response);
                 }
                 .catch(this.handleError);

}
Run Code Online (Sandbox Code Playgroud)

然后将其显示在组件HTML模板中:

<p class='responseStatus'>{{responseStatus}}</p>
Run Code Online (Sandbox Code Playgroud)


Mus*_*afa 9

这是代码:

http.get(
   '${this.baseUrl}users/activate?mailToken=${mailToken}',
    {observe: 'response'}
).subscribe(response => {

}, error => {
      // You can access status:
      console.log(error.status);
});
Run Code Online (Sandbox Code Playgroud)

上面的代码调用subscribe()实例的方法,然后在error通知中获取状态。