我正在尝试向API发送HTTP请求,而API确实需要特定的头才能工作。
直到现在,我尝试了一些不同的方法来发送头。起初,我试图在httpoptions对象中设置头并将其传递给我的'httpclient.get()'函数,但这不起作用。
因为我对angular和typescript非常陌生,所以我读了一些关于如何发送HTTP请求的文章。拦截器应该是我正确的选择,我修改了我的代码。
以下是我提出请求的功能:
constructor(private http: HttpClient) {}
public getVersions() {
let url = baseUrl + '/docs/versions';
this.http
.get(url)
.subscribe(data =>{
console.log(data);
}, err => {
console.log(err);
});
return true;
}
音符:
return true;
这里只是测试用的吗
这是我的拦截器
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpHeaders, HttpHandler, HttpRequest, HttpEvent, HttpResponse }
from '@angular/common/http';
import { Observable } from 'rxjs';
import 'rxjs';
@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
console.log('intercept http request');
const duplicate = req.clone({
headers: new HttpHeaders().set('dummy-header', 'dummy-header-info')
});
console.log(duplicate.headers.get('dummy-header');
console.log('new header request');
return next.handle(duplicate);
}
}
这是我的控制台日志
intercept http request
http-interceptor.ts:19 dummy-header-info
http-interceptor.ts:20 new header request
zone.js:2969 OPTIONS http:
api.service.ts:21
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, â¦}
error : ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", â¦}
headers : HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message : "Http failure response for (unknown url): 0 Unknown Error"
name : "HttpErrorResponse"
ok : false
status : 0
statusText : "Unknown Error"
url : null
__proto__ : HttpResponseBase
由于缺少请求头,请求失败。
所以对我来说,标题映射看起来是一个空映射。但为什么,我的错误在哪里?