没有正文

时间:2017-11-18 05:25:12

标签: angular http

我正在使用Angular http模块v4.4.6。当Angular应用程序(客户端)向服务器发送PUT请求(使用HttpClient),并且服务器响应状态200(OK)而主体中没有任何数据时,有角度的http模块会抛出HttpErrorResponse

这是一个正确的功能还是一个错误? 如何在没有任何数据的情况下处理PUT响应?

详细信息:

在最近的版本中,我使用了普通Http模块及其方法put()。在那里,我需要调用res.json()来获取正文中的JSON数据。 put()方法返回Observable<Response>

现在我使用较新的HttpClient及其put()方法。此方法返回Observable<Object>。似乎json()方法在内部调用并导致我看到的错误。

  • Angular客户端使用HttpHeader 'Content-Type': 'application/json'创建PUT请求。这会产生HTTP PUT请求标头Accept:application/json, text/plain, */*)。
  • 服务器以状态200(OK)回答,并且正文中没有任何数据。
  • Angular客户端收到答案并抛出错误。

HttpErrorResponse {headers: HttpHeaders, status: 200, ... error: error: SyntaxError: Unexpected end of JSON input at .. text: "" headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: ... message: "Http failure during parsing for ... name: "HttpErrorResponse" ok: false status: 200 statusText: "OK" url: ...

2 个答案:

答案 0 :(得分:5)

@yonexbat,谢谢你是对的。

如果使用....

const response = this.http.put(url, data, { responseType: 'text'}).toPromise();

......问题解决了。

答案 1 :(得分:0)

Angular 7/8中的corret代码是

    k  a  b  c   d
3  16  2  1  2  13
4  17  1  4  3  25
5  93  3  2  8  18

不要问为什么这种愚蠢的方法有效:-/参见link