将 headers 添加到 Angular 中的 http.get 时出错 4

Error in adding headers to http.get in Angular 4

我正在尝试以下代码:

  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()
    };
  })

但出现以下错误:

Argument of type '{headers: HttpHeaders; responseType: ResponseContentType.Blobl;}' is not assignable to parameter of type 'RequestOptionsArgs'. Type 'HttpHeaders' is not assignable to type 'Headers'

只有 headers 有问题,因为没有它就没有错误。 如何向我的获取请求添加头部?

可能是因为您使用的是 HttpModule (angular 2,4) 而不是新的 HttpClientModule (angular 4,5,6) (并且 Http class 而不是 HttpClient class)

此外,HttpHeader 是不可变的。要使用新的 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

import {Headers} from 'angular2/http'; var headers = new Headers();

这是你应该使用的。它用简单的词写在错误中,即不可分配给类型 HttpHeaders()。您必须使用 Headers()

// HttpClient(@angular/common/http)

let myHeader = new HttpHeaders();
    myHeader.append("Authorization", Token);
let options =  {       
          headers: myHeader, responseType: 'blob'
    }

// HTTP(@angular/http)

 let myHeader = new Headers();
    myHeader.append("Authorization", Token);

let options = new RequestOptions() {       
          headers: myHeader, responseType: ResponseContentType.Blob
    }

//请求

return this.http
      .get(this.service.GetDomainPrefix() + "Source/Download/" + id, options).map(res => {
    return {
      filename: name + '.mp4',
      data: res.blob()
    };
  })