У меня есть метод post с использованием angular 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, когда я проверяю его по почтеку, я получаю ok, но не так, как JSON.

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

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

submitInfo() {
   this.http.post(url, data).toPromise()
      .then(
          (response: Response) => {
              console.log(response);
          }
      ));
}
-1
MrRobot 1 Окт 2019 в 17:22

1 ответ

Лучший ответ

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

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

this.http.post(url, parameters, { responseType: 'text' });
1
jonrsharpe 1 Окт 2019 в 14:30