![](/img/trans.png)
[英]angular 5 httpclient , on post , the response does not return custom headers, only returns response object
[英]angular 5 httpclient , on post , the response does not return headers, only returns response object
我最近移到了Angular 5,更早的時候http.post返回帶有標頭的響應對象,但是使用httpclient,它不返回響應標頭。 我如何更改這部分郵政編碼以提供包括響應標頭的完整響應對象
我讀到有關使用{observable:“ response”}的信息,但是它不起作用
post(inURL, data, config = undefined) {
let headers, options;
if (config) {
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
let action = this.httpService.post(inURL, data, options);
return new Promise((resolve, reject) => {
action.subscribe(
response => resolve(response),
error => {
this.interceptError(error);
reject(error);
}
);
});
}
我假設您有很大的理由從這里返回promise
而不是Observable。
話雖這么說,您正在使事情復雜化。 您可以簡單地從post
的返回值調用toPromise()
。
很好,您說過您使用了{observable: "response"}
但沒有用。 那是因為您沒有正確使用它。 應該 {observe: "response"}
而不是 {observable: "response"}
它必須是選項的一部分。 因此,我使用了散布運算符( ...
)並將{observe: "response"}
到options
。
試試看:
post(inURL, data, config = undefined) {
let headers, options;
if (config) {
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
options = { ...options, observe: 'response' };
this.httpService.post(inURL, data, options)
.toPromise();
}
您可以在進行HTTP調用后僅返回HttpClient響應:
getServiceData(): Observable<any>{
return this.httpClient
.post(myUrl, requestBodyObj)
.map((httpResponse: any) => {
if (httpResponse.operationStatus.statusCode === '0') {
return httpResponse.data;
} else {
throw new Error('error in service call');
}
})
}
在您的組件類中,您可以訂閱service方法:
myService.subscribe( (data) => {
// do something with data received
}, error => {
// do something when error
})
有關HttpClient使用情況的更多詳細信息,請參見官方指南
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.