更改 http.post 的响应类型

Change response type for http.post

我有一个使用 Angular 的 HttpClientpost 方法。

我正在尝试订阅响应,以便之后可以做一些事情,但我收到此错误:

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 上测试它时,我得到了一个 OK 但不是 JSON.

我的问题是,我该如何解决这个问题?有没有办法将其转换为 JSON?

我的方法如下:

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

默认情况下,Angular 尝试将 HTTP 响应处理为 JSON,因此即使实际 HTTP 请求成功,它也会进入错误处理程序。对于非 JSON 响应,您可以明确指定您希望在 HTTP 请求中收到文本响应,或者为了获得响应的内置 Angular 错误处理的好处,将您的响应从 server/middleware 修改为JSON.

对于非JSON 响应尝试修改您的 HTTP 请求,如下所示

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