【发布时间】:2015-05-28 22:43:36
【问题描述】:
我有以下代码用于调用返回字节数组的 Web API。 我想将 ContentType 设置为 'application/pdf',这在 jQuery ajax 调用中非常简单,但在 angularjs 中找不到方法。
问题:我将如何在 angularjs 中对以下代码执行此操作?
return $http.get('/api/v1/alarms/exportsummarytopdf?start=2011-03-
30T05:00:00.000Z&end=2015-04-14T05:00:00.000Z')
.then(getSummaryPdfExportComplete)
.catch(function (message) {
exception.catcher('XHR failed for getSummaryPdfExport')(message);
});
function getSummaryPdfExportComplete(response) {
logger.info('getSummaryPdfExport: complete');
return response.data;
}
更新 1:
当我直接访问类似的 URL 时,Chrome 清楚地将内容类型显示为“应用程序/pdf”。在调用返回字节数组的 web api 时,我可能需要使用其他东西。
Chrome 中显示的错误如下。
当我使用 responseType: 'arraybuffer' 时,此失败请求的标头如下。
【问题讨论】:
-
Content-Type 是一个响应头。为什么要在请求中设置它?
-
您在请求中传递了一个标头对象:docs.angularjs.org/api/ng/service/$http 但实际上您的服务器应该是设置内容类型的服务器,而不是客户端。
-
您能否发布实际 URL 的标题,而不是“相似”的 URL?
-
看起来您遇到了服务器错误。问题不在于内容类型。
Status code: 400 Bad Request您发送的参数不是 api 所期望的,或者 api 存在导致其抛出异常的错误。 -
@HankScorpio 几个 cmets(来自 OP)~stackoverflow.com/questions/30518266/…。鉴于这不是请求参数,我会说这绝对是 API 的内部错误。我还要说它返回了错误的状态码;应该是 500