更改 http.post 的响应类型
Change response type for http.post
我有一个使用 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 请求中收到文本响应,或者为了获得响应的内置 Angular 错误处理的好处,将您的响应从 server/middleware 修改为JSON.
对于非JSON 响应尝试修改您的 HTTP 请求,如下所示
this.http.post(url, parameters, { responseType: 'text' });
我有一个使用 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 请求中收到文本响应,或者为了获得响应的内置 Angular 错误处理的好处,将您的响应从 server/middleware 修改为JSON.
对于非JSON 响应尝试修改您的 HTTP 请求,如下所示
this.http.post(url, parameters, { responseType: 'text' });