【发布时间】:2019-08-08 19:23:21
【问题描述】:
任何人都可以举一个从 Angular 6 httpClient 获取应用程序/八位字节流响应的示例。我正在使用下面的代码,但它不起作用(我收到未知错误 - 401 响应) -
import { saveAs } from 'file-saver';
getJobOutput() {
this.workflowService.fetchOutput(this.jobId,this.outputId).subscribe((response : any) => { // download file
var blob = new Blob([response.blob()], {type: 'application/octet-stream'});
var filename = 'file.csv';
saveAs(blob, filename);
});
}
服务如下 -
fetchOutput(jobId : string, outputId) {
var jobOutputURL = "myEnpoint";
var params = this.createHttpAuthorization(jobOutputURL,"GET");
params["format"] = "csv";
const options = {
headers: new HttpHeaders( { 'Content-Type': 'application/octet-stream',
'Accept' : 'application/octet-stream',
'Access-Control-Allow-Origin' : '*'}
)};
var endpoint = `${jobOutputURL}?oauth_consumer_key=${params["oauth_consumer_key"]}&oauth_signature_method=${params["oauth_signature_method"]}&oauth_nonce=${params["oauth_nonce"]}&oauth_timestamp=${params["oauth_timestamp"]}&oauth_version=1.0&format=${params["format"]}&oauth_signature=${params["oauth_signature"]}`;
return this.httpClient.get(endpoint, {...options, responseType: 'blob'});
}
【问题讨论】:
-
您的请求看起来不错,如果您收到
401,则您无权下载.csv。检查您的 API,是否允许您访问。 -
401 错误表示“未经授权”。您确定您已授权该请求吗?
-
是的。在 jquery 中询问时相同的请求工作正常。
-
这个请求有效 - this.getOutputFileURL = function(jobId, outputId, format) { var type = "GET", url = this.apiLocation + "/jobs/" + jobId + "/output/ " + outputId + "/", 参数 = buildOauthParams(this.apiKey); $.extend(params, {format: format || "Raw"}); var signature = generateSignature(type, url, params, this.apiSecret); $.extend(params, {oauth_signature: 签名}); window.location.assign(url + "?" + $.param(params)); };
标签: html node.js angular typescript http