angular - RxJS HTTP-Client:非 JSON 的响应类型
问题描述
我不确定这里有什么问题。我想做一个响应二进制数据(例如文件下载)而不是 JSON 的 HTTP 请求。
import {HttpClient, HttpHeaders, HttpParams} from "@angular/common/http";
这些行没问题 - 但期待 JSON。
let x = this.http.get <any> ("http://myhost", { responseType : 'json' });
let y = this.http.get <any> ("http://myhost");
但我需要将响应定义为不是 JSON。
let z = this.http.get <any> ("http://myhost", { responseType : 'string' });
在这里我遇到了一个问题。我也试过'blob'。我总是在编译时收到打字稿错误。
类型参数 '{ responseType: "string"; }' 不能分配给类型为 '{ headers?: HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }; 观察?:“身体”;参数?:Ht...'。属性“responseType”的类型不兼容。类型“字符串”不能分配给类型“json”。
解决方案
如果数据是文件,请使用blob
,但您需要删除通用参数。采用:
his.http.get("http://myhost", { responseType : 'blob' });
采用泛型的版本仅适用于 JSON,因为它旨在解析响应
推荐阅读
- java - 在Java中将类型转换的数字作为数组中的索引时出错
- typescript - Symfony/Webpack.encore 配置,添加“模块规则”以便在 vue.js 中使用 typescript
- java - 为什么 CONTENT_DISPOSITION 标头被认为是不安全的?
- git - Vscode:如何更改保存的 github 用户名和密码?
- unix - 文件夹结构中某些文件的“zip 名称不匹配”
- reactjs - 如何从表单反应更新堆栈数组
- r - 如何将公式传递给 lm() 而不会出错?
- java - Java getStacktrace 返回错误的行号
- c++ - 在 C++17 中以毫秒为单位获取时间?
- python - 关闭/关闭 Python Websocket