我正在尝试获取ZIP文件(通常通过按钮单击将浏览器用户用作文件)。 在Chrome网络中,HTTP请求可以正常显示。 但是HttpClient.get函数返回错误。 这是调用函数代码
const userUri = this.userEnv + 'api/Upload/Download?fileID=' + fileIDResponse;
const userHttpOptions = {
headers: new HttpHeaders({
'Authorization': 'Basic ' + this.authToken,
responseType: 'blob'
})
};
this.http.get(userUri,
userHttpOptions).subscribe(fileResponse => console.log(fileIDResponse),
fileError => console.log(fileError)
);
开发工具中的请求标头 - >网络,提供Status Code: 200 OK
。
回复到控制台的fileError说 SyntaxError:位于0的JSON中的意外标记P. 在JSON.parse() 在XMLHttpRequest.onLoad(webpack-internal:///./node_modules/@angular/common/esm5/http.js:2291:51)
如何修改代码以提供ResponseType?
最诚挚的问候, 维纳亚克
答案 0 :(得分:1)
const userHttpOptions = { headers: new HttpHeaders({ 'Authorization': 'Basic ' + this.authToken, responseType: 'blob' }) };
responseType
本身就是一个选项。它不是HTTP请求标头。你应该把它作为一个选项,而不是标题。
const userHttpOptions = {
headers: new HttpHeaders({
'Authorization': 'Basic ' + this.authToken
}),
responseType: 'blob'
};
据推测,这就是Angular将响应数据误解为JSON的原因。