首页 > 解决方案 > 在 Angular 4 中将标头添加到 http.get 时出错

问题描述

我正在尝试以下代码:

  let myHeader = new HttpHeaders();
    myHeader.append("Authorization", Token);
    return this.http
      .get(this.service.GetDomainPrefix() + "Source/Download/" + id, 
        {       
          headers: myHeader, responseType: ResponseContentType.Blob
    }).map(res => {
    return {
      filename: name + '.mp4',
      data: res.blob()
    };
  })

但出现以下错误:

'{headers: HttpHeaders; 类型的参数 responseType:ResponseContentType.Blobl;}' 不可分配给“RequestOptionsArgs”类型的参数。类型“HttpHeaders”不可分配给类型“Headers”

问题仅在于标题,因为没有它就没有错误。如何在我的获取请求中添加头部?

标签: angulartypescriptangular2-servicesangular4-httpclient

解决方案


这可能是因为您使用的是HttpModule(angular 2,4) 而不是新的HttpClientModule(angular 4,5,6) (以及Http类而不是HttpClient类)

此外,HttpHeaders 是不可变的。要使用新的 HttpClientModule,请使用此代码

import {HttpClient, HttpHeaders} from '@angular/common/http';

constructor(private http: HttpClient){}
//...
let myHeader = new HttpHeaders().append("Authorization", Token);
    return this.http
      .get(this.service.GetDomainPrefix() + "Source/Download/" + id, 
        {       
          headers: myHeader, responseType: 'blob'
    })
.map(res =>  {
      filename: name + '.mp4',
      data: res
          })

你需要修改你AppModule的导入HttpClientModule而不是HttpClient


推荐阅读