如果我使用Angular 4.3.3中的新HttpClient从HTTP请求中获取无效数据,例如此(无关的逗号):
{
"a": "it is a",
"b": "it is b",,
}
我没有错误,结果是null
this.httpClientNew.get<any>('assets/mockjson.json').subscribe(
(response) => {console.log("NEW RESPONSE:[" + response + "]")},
(error) => {console.error(error)}
)
使用旧客户端我可以获得JSON解析错误,包括问题所在的确切字符:
this.httpClientOld.get('assets/mockjson.json').map(
(response) => {console.log("OLD RESPONSE:[" + response + "]");
return response.json();
}
).subscribe(
(res) => {console.log(res)},
(err) => {console.error(err)}
)
这给出了一个很好的错误:
SyntaxError: Unexpected token , in JSON at position 39
有没有办法使用新的Angular 4.3.3 HttpClient获取此详细错误消息? 感谢。
答案 0 :(得分:3)
基本答案是“不”。
来自Angular团队的人员:
“HttpClient将解析委托给浏览器。这不会报告 错误“。
那么,如果只检索大量Json以获得null
,该怎么办呢?有没有办法知道它甚至是一个解析错误而不是服务器问题,如果我们所有回来的都是null
?所有未解决的问题。
也许我们需要在github上为此开始一个问题以供进一步讨论? https://github.com/angular/angular/issues
答案 1 :(得分:1)
如果您对整个响应感兴趣,可以使用观察:
this.http.get('…', { observe: 'response' });
希望它有所帮助。