【发布时间】:2018-03-21 04:25:20
【问题描述】:
我有一个提供字节数组的 Spring REST 服务。以前我使用的是 angularjs 1。使用 FileSaver,我能够下载 REST 服务根据 HTTP POST 调用的响应发送的 pdf。
现在,我正在将我的更改迁移到 Angular 5。这是我在服务中的 HTTP 发布调用 -
testPDF(abc: FormArray): Observable<HttpResponse<any>> {
const options = {
headers: new HttpHeaders({
'Content-type': 'application/json',
'response-type': 'blob'
})
}
return this.http.post<HttpResponse<any>>('/myRestPath', abc, options);
}
在我的组件打字稿文件中,我已经像这样订阅了 -
xyz() {
this.myService.testPDF(this.abc.value).subscribe((file: any) => console.log('done'));
}
我已经验证了我的 REST 服务。它返回正确的字节数组。我尝试了互联网上提供的其他几种解决方法。但似乎没有任何效果。在浏览器控制台中,我可以看到响应,它看起来是字节流中的 PDF。在控制台中,我可以看到收到了 3-4 MB 大小,这让我相信我已经收到了数据但无法订阅。 HTTP 响应码也是 200。
看起来默认情况下,响应被尝试作为 JSON 而不是 BLOB 获取。由于我的响应不是以“{”开头,因此在解析数据时它无法解析响应。我不是要求任何人为我编写代码。对于下载 PDF 文件,我可以使用 FileSaver 来完成。
我面临的关键问题是为什么我的应用程序没有进入订阅块并执行控制台语句。
【问题讨论】:
-
显示
abc方法myService; -
对不起。我的错。 Abc 方法是 testPDF 的一种。我已经更新了问题。
标签: json angular http rxjs angular5