gpt4 book ai didi

angular - 解析 http 时 Http 失败...下载 pdf 文件时

转载 作者:行者123 更新时间:2023-12-03 20:17:05 25 4
gpt4 key购买 nike

我是 Angular 的新手,我一直在努力弄清楚如何下载文件,在我的情况下是 pdf 文件。
这是我得到的错误:

Http failure during parsing for https://url...

在浏览器的调试控制台中也是一个错误:
SyntaxError: Unexpected token % in JSON at position 0 at JSON.parse

其实我正在下载一个pdf文件。这是我的 http 调用的样子:
  protected get<T>(url: string, params: any, defaultResult: T): Observable<T> {
return this.httpClient.get<T>(url, {
headers: myHeader,
params: params
})
.pipe(catchError(this.handleError(defaultResult))
);

}
如何

最佳答案

由于您要传回一团数据而不是 JSON,但不让 httpclient 知道如何将其解析回来,因此 Angular 会尝试将响应解析为默认路径的 JSON。

这是来自 Angular 网站的文档:

request(first: string | HttpRequest<any>, url?: string, options: {
body?: any;
headers?: HttpHeaders | {
[header: string]: string | string[];
};
observe?: HttpObserve;
params?: HttpParams | {
[param: string]: string | string[];
};
reportProgress?: boolean;
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
withCredentials?: boolean;
} = {}): Observable<any>

响应类型:

除了配置请求参数(例如传出 header 和/或正文)之外,选项哈希还指定了有关请求的两个关键信息:responseType 和要观察的内容。
responseType 值确定如何解析成功的响应正文。如果 responseType 是默认 json,则结果对象的类型接口(interface)可以作为类型参数传递给 request()。


所以在你的情况下尝试:
    protected get<T>(url: string, params: any, defaultResult: T): Observable<any> {
return this.httpClient.get(url, {
headers: myHeader,
params: params,
responseType: 'blob'
})
.pipe(catchError(this.handleError(defaultResult))
);

更多信息:

httpclient

documentation

类似的问题
Angular HttpClient "Http failure during parsing"

关于angular - 解析 http 时 Http 失败...下载 pdf 文件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50018730/

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