簡體   English   中英

Angular2 ES5 - 覆蓋HTTP POST標頭中的Content-Type

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM