Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular 4 HttpClient中,如何接收状态代码?_Angular_Angular Httpclient - Fatal编程技术网

在Angular 4 HttpClient中,如何接收状态代码?

在Angular 4 HttpClient中,如何接收状态代码?,angular,angular-httpclient,Angular,Angular Httpclient,要获取数据,我正在执行以下操作: data = this.http.get(url, httpOptions); 但这只是返回身体。我需要完整的回复才能得到状态。我知道这个语法: data = this.http.get(url, {observe: 'response'}); 但这将取代我的httpoptions,这将使我未经身份验证。我不能像在POST中那样在GET上添加另一个参数。请帮忙 使用此代码获取状态 更新于[15/02/19]: getOptions={ 标题:新的HttpH

要获取数据,我正在执行以下操作:

data = this.http.get(url, httpOptions);
但这只是返回身体。我需要完整的回复才能得到状态。我知道这个语法:

data = this.http.get(url, {observe: 'response'});

但这将取代我的
httpoptions
,这将使我未经身份验证。我不能像在
POST
中那样在
GET
上添加另一个参数。请帮忙

使用此代码获取状态

更新于[15/02/19]:


getOptions={
标题:新的HttpHeaders({
“内容类型”:“应用程序/json;字符集=UTF-8”,
“authToken”:this.token//包含authToken作为请求头中的参数
//用于授权的http.get方法。
})
};
//用于获取请求的整个响应,包括状态代码等。
getOptions['observe']='response';
返回此.http.get(url,getOptions)
.烟斗(
catchError(this.handleError)
)
.订阅(res=>{
控制台日志(res);
},
err=>{console.log(err)});

以上更新的代码将给出整个响应

使用此代码获取状态

更新于[15/02/19]:


getOptions={
标题:新的HttpHeaders({
“内容类型”:“应用程序/json;字符集=UTF-8”,
“authToken”:this.token//包含authToken作为请求头中的参数
//用于授权的http.get方法。
})
};
//用于获取请求的整个响应,包括状态代码等。
getOptions['observe']='response';
返回此.http.get(url,getOptions)
.烟斗(
catchError(this.handleError)
)
.订阅(res=>{
控制台日志(res);
},
err=>{console.log(err)});

上面更新的代码将导致给出整个响应

无法将第三个参数添加到http.get中的原因是它不接受第三个参数。
observe
“syntax”是
httpOptions
参数的一部分,因此您只需将
httpOptions
对象中的内容与
{observe:“response”}

例如,如果您的
httpOptions
如下所示:

const httpOptions = {
  headers: {
    "Content-Type": "application/json"
  }
}
您可以将其与上面的
观察
对象组合,如下所示:

const httpOptions = {
  headers: {
    "Content-Type": "application/json"
  },
  observe: "response"
}
如果您接受
httpOptions
作为参数(因此您不能像上一个示例中那样从头创建一个新参数),您可以直接在其上写入
observe
字段:

httpOptions.observe = "response"
这两种方法都将保留当前的
httpOptions
对象,并向其添加
observe:“response”
字段

编辑

要使此方法起作用,您需要向编译器“撒谎”了解
的类型以允许其编译。您可以通过在
httpOptions
对象中的
“response”
末尾添加
作为任何
来完成此操作:

const httpOptions = {
  headers: {
    "Content-Type": "application/json"
  },
  observe: "response" as any
}

之所以需要这样做,是因为TypeScript无法正确推断原始
httpOptions
对象的类型(它希望
“response”
是文本
“body”
)。告诉TypeScript将
“response”
解释为
任何
,可以解决此问题。

无法向
http.get添加第三个参数的原因是它不接受第三个参数。
observe
“syntax”是
httpOptions
参数的一部分,因此您只需将
httpOptions
对象中的内容与
{observe:“response”}

例如,如果您的
httpOptions
如下所示:

const httpOptions = {
  headers: {
    "Content-Type": "application/json"
  }
}
您可以将其与上面的
观察
对象组合,如下所示:

const httpOptions = {
  headers: {
    "Content-Type": "application/json"
  },
  observe: "response"
}
如果您接受
httpOptions
作为参数(因此您不能像上一个示例中那样从头创建一个新参数),您可以直接在其上写入
observe
字段:

httpOptions.observe = "response"
这两种方法都将保留当前的
httpOptions
对象,并向其添加
observe:“response”
字段

编辑

要使此方法起作用,您需要向编译器“撒谎”了解
的类型以允许其编译。您可以通过在
httpOptions
对象中的
“response”
末尾添加
作为任何
来完成此操作:

const httpOptions = {
  headers: {
    "Content-Type": "application/json"
  },
  observe: "response" as any
}

之所以需要这样做,是因为TypeScript无法正确推断原始
httpOptions
对象的类型(它希望
“response”
是文本
“body”
)。告诉TypeScript将
“response”
解释为
任何
都可以解决这个问题。

也许这可以帮助你,@DanyParedes谢谢,但我已经读过了。他们没有提到我需要发送身份验证头的情况。可能是@rickz Not的重复。StackOverflow中的所有答案都没有说明HttpClieht的
http.get
也会使用身份验证参数这一事实。即使是官方文件也没有这个案例,至少到目前为止我读过。请告诉我们你是如何发送身份验证的。也许这可以帮助你,@DanyParedes谢谢,但我已经读过了。他们没有提到我需要发送身份验证头的情况。可能是@rickz Not的重复。StackOverflow中的所有答案都没有说明HttpClieht的
http.get
也会使用身份验证参数这一事实。即使是官方文档也没有这个案例,至少到目前为止我还没有读到。请告诉我们您是如何发送身份验证的。谢谢,但我尝试了这个,但没有成功。首先,我也不能为
标题使用普通对象。它必须是
headers:new-HttpHeaders({'Content-Type':'application/json'})
,如果我将
observe:“response”
放在它下面,就像
const-httpOptions={headers:new-HttpHeaders一样({