%PDF-1.7 % 4 0 obj <> 流 x Z[o Fi F8H BR@ TJz! /R \ n d Jy/ w V x !WW; _#s&:T | H9c $ @,Y18 “qwr8Na @ Y8)IX4)fG_ {2" 䔼qBŸtSEg /
我从API获得了这样的回复。我试图在调用函数中读取它,但得到以下错误:
error = SyntaxError:位于0位置的JSON中的意外标记% Function.Json.parse中的JSON.parse()
我的代码是:
downloadInvoice(invoicePdfUrl){
let invoiceId = invoicePdfUrl.split('/')[2];
try{
this.invoiceSub = this.billingService.downloadInvoicePdf(invoiceId).subscribe(
response => {
this.downloadFile(response),//console.log(data),
error => console.log("Error downloading the file."),
() => console.info("OK");
},
error => {
console.log(error);
}
);
}catch(err){
this.errorMsg = 'Something went wrong. Try again later.';
throw err;
}
downloadFile(data: Response){
var blob = new Blob([data], { type: 'text/csv' });
var url= window.URL.createObjectURL(blob);
window.open(url);
}
在服务中:
downloadInvoicePdf(invoiceId){
let apiUrl = getApiUrl("GET_INVOICE_PDF", [API_PATH.API_VERSION2, invoiceId]); //this method return me the exact url to be hit based on the params
let headers = new Headers({ 'Accept': 'application/pdf'});
let options = new RequestOptions({
headers : headers
});
return this.http.get(API_PATH.BASE_ACCOUNTS_ENDPOINT + apiUrl,options).map(res => res.json();
// return
}
请指导我处理此类回复。
答案 0 :(得分:2)
首先:你错过了.map(res => res.json()>>>)<<<;
中的结束括号 - 也许这只是一个复制/粘贴问题。
但是现在问题是:您收到PDF作为回复,并尝试使用JSON-Parser解析PDF响应 - &gt;这不起作用,就像有一个中文文本,并期望有人不知道汉字是什么来理解这个文本。
根据您的使用情况,您需要:
=&GT;对于简单的文件下载以及由于您正在执行GET-Request,如果您只是生成download-url并将其绑定到模板中的anchor-tag,那么它将是最简单的:
<a [attr.href]="pdfDownloadLink">Download me!</a>