Изменить тип ответа для http.post - PullRequest
0 голосов
/ 01 октября 2019

У меня есть метод post с использованием Angular's HttpClient.

Я пытаюсь подписаться на ответ, чтобы я мог сделать несколько вещей после, но я получаю эту ошибку:

Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":200,"statusText":"OK","url":"XXXXXXX","ok":false,"name":"HttpErrorResponse","message":"Http failure during parsing for XXXXXXXX","error":{"error":{},"text":"OK"}}

Я видел где-то, что это может быть из-заэто не правильный ответ JSON, когда я тестирую его на Postman, я получаю ОК, но не как JSON.

Мой вопрос: как мне обойти это? Есть ли способ для меня, чтобы преобразовать это в JSON?

Мой метод выглядит так:

submitInfo() {
   this.http.post(url, data).toPromise()
      .then(
          (response: Response) => {
              console.log(response);
          }
      ));
}

1 Ответ

1 голос
/ 01 октября 2019

По умолчанию Angular пытается обработать HTTP-ответы как JSON, и, следовательно, он стремится войти в обработчик ошибок, даже если фактический HTTP-запрос завершается успешно. Для ответов, отличных от JSON, вы можете явно указать, что вы ожидаете текстовый ответ в своем HTTP-запросе, или чтобы получить преимущества встроенной обработки угловой ошибки для ответов, измените свой ответ с сервера / промежуточного программного обеспечения как JSON.

Дляответ не в формате JSON, попробуйте изменить свой HTTP-запрос, как показано ниже

this.http.post(url, parameters, { responseType: 'text' });
...