2017-08-08 72 views
2

我使用的是新的(4.3)的HttpClient的角度来POST数据到我的后端服务器:角2 HttpClient的错误体

this.httpClient.post<View>(`/path`, data).subscribe(
    (view: View) => console.log("Success"), 
    (error: HttpErrorResponse) => { 
     console.log(error) 
     this.errorMessage = <any>error.error; 
    }); 
); 

此调用生成(预期的)错误(409),但对于一些原因,记录的错误不包含从服务器发送的错误的正文。我可以看到状态码,但error.error字段应该包含响应正文缺失。任何人有任何想法可能是错误的?

我已经使用curl测试了后端调用,并且可以从服务器中看到响应主体。

回答

0

这是角一个已知的错误,这是JSON解析过程中抛出一个异常,而不是填充错误字段:

https://github.com/angular/angular/pull/18466

+0

所以在此期间没有用户友好的消息? – naoru

+0

如果你的服务器的响应不是json ... –

+0

我已经用拦截器解决了它。 –

0

您的错误正文是以JSON格式还是未格式化的文本/其他格式?我有一个类似的问题,直到我意识到返回错误结果的主体是一个简单的字符串。我不得不改变调用与此类似(原谅缺乏类型安全的位置):

this.http.post('http://address', body, { responseType: 'text' }) 
     .subscribe(data => { 
      this.result = data['value']; 
      this.router.navigate(['/route']); 
     }, (error: HttpErrorResponse) => { 
      this.error = error.error; 
      this.router.navigate(['/error']); 
     }); 
+0

这是使用新的HttpClient吗?当我使用该语法时,出现错误:'TS2345:类型'{responseType:“text”; }'不能分配给类型为'{headers?:HttpHeaders;观察?:“身体”; params ?: HttpParams; reportProgress?:boolean;负责...'。' –

+0

@DanielScott请参阅https://angular.io/guide/http#requesting-non-json-data {responseType:'text'}转到身体参数,紧跟在url之后。 – user1740331