Я (данные, статус, заголовки, config, statusText) использует $ http.post() для вызова сервера в приложении. Код сервера находится в.net. Для конкретного случая использования, когда процесс выходит из строя, сервер возвращает бизнес-исключение вместе с сообщением.
Теперь я вижу сообщение, которое печатается в консоли Chrome красным цветом, а также код 404. Также я вижу сообщение в разделе заголовка Fiddler сверху, так как "HTTP/1.1 404 Message is here". Но я не понимаю, как извлечь это сообщение из заголовков ответов.
Я попробовал следующее:
$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);
});
Заголовки печатаются в консоли как функция, "функция анонимная (имя)" Мне нужна помощь в извлечении из нее чего-либо (если это вообще возможно). СтатусText печатается как неопределенный. Мне действительно нужна помощь здесь, так как мне нужно отобразить отправленное сообщение пользователям.
Если это имеет значение: сообщение отправляется в свойство reasonPhrase с сервера
Я не знаю, какую версию angularjs вы используете, но "традиционный" success
и обратный вызов error
устарели.
Пожалуйста, рассмотрите новый подход с .then(...)
см. Здесь: https://docs.angularjs.org/api/ng/service/$http
Но чтобы ответить на ваш вопрос: параметр headers
в функции обратного вызова представляет собой getter, поэтому вам нужно называть его: headers()
. Вы также можете применить к нему параметр (конкретный заголовок).
Прежде всего, методы .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.
В соответствии с подробной информацией на странице, указанной выше, в объекте ответа вы имеете доступ к следующему:
{string|Object}
- тело ответа, преобразованное функциями преобразования.{number}
- код статуса HTTP ответа.{function([headerName])}
- Функция получения заголовка.{Object}
- объект конфигурации, который использовался для генерации запроса.{string}
- текст ответа HTTP-ответа.
.then
работает со старым Angular см. Обновление для Legacy AngularJS v1.2