Angular 更改http.post的响应类型
我有一个使用Angular的HttpClient的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
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转换。非常感谢兄弟!我真的非常感谢你的帮助