首页 > 解决方案 > 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”。

标签: angulartypescriptrxjsrxjs6

解决方案


如果数据是文件,请使用blob,但您需要删除通用参数。采用:

his.http.get("http://myhost", { responseType : 'blob' });

采用泛型的版本仅适用于 JSON,因为它旨在解析响应


推荐阅读