[英]Angular2 ES5 - overriding Content-Type in HTTP POST header
試圖覆蓋標題的內容類型,但它仍然是text / plain。 有一種方法可以用Ben Nadel的GateWayAPI,但希望有一個不涉及自定義包裝的解決方案。
var url = this.url;
var body = JSON.stringify({email_login: "login", password_login: "password"});
var headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
return this.http.post(url, body, {headers:headers})
.map(function (response) {
return response.json();
})
.catch(this.handleError);
如何使用append函數代替:
let headers = new Headers();
headers.append("Content-Type", "application/x-www-form-urlencoded");
Http
請求post
有以下簽名:
post(url: string, body: any, options?: RequestOptionsArgs)
第三個參數是RequestOptionsArgs
類型的參數,這意味着您必須將RequestOptions
傳遞給它,而不是Headers
。 您還應該使用箭頭操作符( =>
)而不是function
。 你在尋找的是這樣的:
result: any;
httpPostTest() {
var url = this.url;
var body = JSON.stringify({email_login: "login", password_login: "password"});
let headers: Headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded' });
let options: RequestOptions = new RequestOptions({ headers: headers });
this.http.post(url, body, options)
.map(response => {
response = response.json();
})
.catch(this.handleError);
}
在此之后,你需要使用subscribe來獲得response
,所以讓我們說這個函數叫做httpPostTest
(我將它添加到上面),我們想要將響應存儲在名為result
變量中:
this.httpPostTest().subscribe(
response => { this.result = response; },
error => { console.log('ERROR'); },
() => { console.log('FINISHED')}
);
您應該創建RequestOptions類的實例,並在使用form-urlencoded時使用字符串而不是json對象:
var body = "email_login=login&password_login=password";
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
this.http.post(url, body, options);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.