HttpClient can't parse empty response

后端 未结 2 1777
别那么骄傲
别那么骄傲 2020-12-10 17:46

I have an interceptor that adds a token in the headers. However, if I use it after a POST request my Observer in the subscription is not triggered.

Interceptor:

2条回答
  •  春和景丽
    2020-12-10 17:50

    My workaround is an HttpInterceptor that catches errors when the status code is 200 and returns an HttpResponse with a null body instead (just like HttpClient does with 204 Not Content responses):

    @Injectable()
    export class EmptyResponseBodyErrorInterceptor implements HttpInterceptor {
    intercept(req: HttpRequest, next: HttpHandler): Observable> {
    return next.handle(req)
      .catch((err: HttpErrorResponse) => {
        if (err.status == 200) {
          const res = new HttpResponse({
            body: null,
            headers: err.headers,
            status: err.status,
            statusText: err.statusText,
            url: err.url
          });
          return Observable.of(res);
        } else {
          return Observable.throw(err);
        }
      });
     }
    }
    

提交回复
热议问题