Angular 更改http.post的响应类型

Angular 更改http.post的响应类型,angular,typescript,angular-httpclient,Angular,Typescript,Angular Httpclient,我有一个使用Angular的HttpClient的post方法 我正在尝试订阅响应,以便在之后可以执行一些操作,但我遇到了以下错误: Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":200,"statusText":"OK","url":"XXXXXXX","ok":false,"name":"HttpErrorRespons

我有一个使用Angular的HttpClient的post方法

我正在尝试订阅响应,以便在之后可以执行一些操作,但我遇到了以下错误:

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请求中有文本响应,或者为了获得响应的内置角度错误处理的好处,可以将服务器/中间件的响应修改为JSON

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

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

如果响应不是JSON,请阅读@jornsharpe谢谢!所以,当你明确地说responseType:“text”时,这不是为了进行转换,对吗?更确切地说,这是告诉你期望什么?@iconio它告诉它期望什么,这也禁用了默认的JSON.parse转换。非常感谢兄弟!我真的非常感谢你的帮助