gpt4 book ai didi

angular - 如何处理 HttpRequest 中响应类型 blob 的错误

转载 作者:太空狗 更新时间:2023-10-29 17:02:28 24 4
gpt4 key购买 nike

我正在使用 httpClient 调用 http 请求并将响应类型用作“blob”,但问题是当它进入错误 block 时,响应类型仍然是“blob”。这导致我的错误处理出现问题。

this.httpClient.get('http://m502126:3000/reports/perdate', {
observe: 'body',
responseType: 'blob',
params: new HttpParams().set('START_DATE', startDate)
.set('END_DATE', endDate)
.set('MIXER', mixer)
.set('ATTACH', 'true')

}).subscribe(data => {
console.log(data);
},
error => {
console.log(error);

}

)

问题是我将请求类型设置为“blob”,错误类型为“任意”。因此,当错误在错误 block 中来来去去时,响应类型仍然是“blob”。如何处理?

最佳答案

我遇到了同样的问题。为了处理来自 blob 请求的错误响应,您必须通过 FileReader

解析错误内容

这是一个已知的 Angular Issue可以在那里阅读更多详细信息。您也可以在那里找到针对您的问题的不同解决方案。

例如,您可以使用此函数来解析 JSON 中的错误:

  parseErrorBlob(err: HttpErrorResponse): Observable<any> {
const reader: FileReader = new FileReader();

const obs = Observable.create((observer: any) => {
reader.onloadend = (e) => {
observer.error(JSON.parse(reader.result));
observer.complete();
}
});
reader.readAsText(err.error);
return obs;
}

并像这样使用它:

public fetchBlob(): Observable<Blob> {
return this.http.get(
'my/url/to/ressource',
{responseType: 'blob'}
).pipe(catchError(this.parseErrorBlob))
}

关于angular - 如何处理 HttpRequest 中响应类型 blob 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48500822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com