从$ http响应标头中提取特定标头消息

时间:2015-11-30 16:49:04

标签: .net angularjs http

我是(data,status,headers,config,statusText)使用$ http.post()在应用程序中进行服务器调用。服务器代码位于.net中。对于特定用例,当进程失败时,服务器将返回业务异常以及消息。

现在,我可以看到在Chrome控制台中以红色打印的消息以及404代码。此外,我可以在Fiddler的标题部分顶部看到消息,因为“HTTP / 1.1 404消息在这里”。但我不知道如何从响应头中提取该消息。

我尝试了以下内容,

$http.get(requestURL).success(
                function (data,status,headers,config,statusText) {
                    //deferred.resolve(data);
                    console.log("In service",data,status,headers,config,statusText);
                }).error(
                function (data, status, headers, config, statusText) {
                    //deferred.reject(data);
                    console.log(data, status, headers, config, statusText);
                });

标题作为函数打印在控制台中,“函数匿名(名称)”我需要帮助从中提取一些东西,(如果可能的话)。 statusText打印为undefined。我真的需要帮助,因为我需要向用户显示已发送的消息。

如果重要:邮件正在从服务器

的“reasonPhrase”属性中发送

2 个答案:

答案 0 :(得分:1)

首先,不推荐使用.success.error方法。您应该使用.then

此页面提供了完整的详细信息 - https://docs.angularjs.org/api/ng/service/$http

在您的示例中,您应该使用以下内容:

$http.get(requestUrl).then(function (response) {
  // success handling
  console.log(response.headers());
}, function (response) {
  // error handling
  console.log(response.headers());
});

response.headers是一个功能。当您调用它(var headers = response.headers();)时,它将返回一个包含HTTP响应标头的对象。

根据上面链接的页面上的详细信息,您可以在响应对象中访问以下内容:

  • data - {string|Object} - 使用转换函数转换的响应主体。
  • status - {number} - 响应的HTTP状态代码。
  • 标题 - {function([headerName])} - 标题获取功能。
  • config - {Object} - 用于生成请求的配置对象。
  • statusText - {string} - 响应的HTTP状态文本。

答案 1 :(得分:1)

我不知道你正在使用哪种版本的角度,但是传统的" successerror回调已被弃用了一段时间。

请考虑.then(...)的新方法,请参阅此处: https://docs.angularjs.org/api/ng/service/$http

但要回答你的问题: 回调函数中的headers参数表示一个getter,因此您需要调用它:headers()。您还可以在那里应用参数(特定标题)。