2016-09-28 12 views
3

ヘッダーのコンテンツタイプをオーバーライドしようとしていますが、まだtext/plainになっています。 Ben NadelのGateWayAPIを使って作業する方法がありますが、カスタムラッピングを必要としないソリューションが望まれます。Angular2 ES5 - HTTP POSTヘッダーのContent-Typeをオーバーライドします。

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

答えて

1

代わりにアペンド機能を使用することについてどのように:

let headers = new Headers(); 
headers.append("Content-Type", "application/x-www-form-urlencoded"); 
+0

私もそれを試しました、運はありません。 – kaotik

1

リクエストpostHttpのを次のシグネチャがあります。

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

、あなたはとても者はこの機能がhttpPostTestと呼ばれているとしましょう(私は上記のそれを追加します)、私たちがしたい、responseを取得するためにサブスクライブを使用する必要がありますresultという変数に格納応答:

this.httpPostTest().subscribe(
      response => { this.result = response; }, 
      error => { console.log('ERROR'); }, 
      () => { console.log('FINISHED')} 
); 
+0

試してみました。次のエラーが表示されます。例外:未知(約束):ReferenceError:RequestOptionsが定義されていません。
何らかの理由で、新しいHeaders()objを作成しますが、両方ともAngularのhttp.umd.jsファイルで使用できますが、新しいRequestOptions()objは作成しません。

app.TestService = function(http){this.http = http;};
app.TestService.parameters = [ng.http.Http];
app.TestService.prototype.getData = function(){var headers = newヘッダー({'Content-Type': 'アプリケーション/ x-www-form-urlencoded'}); varオプション=新しいRequestOptions({ヘッダー:ヘッダー}); – kaotik

+1

@kaotikエラーは何ですか? –

+0

@kaotik 'RequestOptions'をインポートしましたか?このように: '@Angel/http";から '{RequestOptions、Http、Headers}をインポートしてください; –

0

あなたは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); 
関連する問題