読者です 読者をやめる 読者になる 読者になる

angular2 でHTTP POST(をクライアントとして実行)したときのエラー

angular

angular2 で、Java Servletに向かって、http のpost methodをしたら、うまくいかなかった。
ブラウザのデバッグツールで通信内容をみたら、
他のPOST通信は、データ本体(body)が、
form data
なのに、今回の通信は、
Request Payload
だった。

解決策

requestにheaderを追加。

    headers.append('Content-Type', 'application/x-www-form-urlencoded');
import {Jsonp, URLSearchParams, Headers, Http, Response} from 'angular2/http';

....

    var params = new URLSearchParams();
    params.set('action', 'login');
    params.set('username', 'username');
    params.set('password', 'password');

    var post_data = JSON.stringify(params);
    //var post_data = "action=login&username=" + username + "&password=" + password;
    let headers = new Headers();
    //headers.append('Content-Type', 'application/json');
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    
    this.http.post(url, params.toString(), {
    headers: headers
    })
    .subscribe((res: Response) => {
      this.status = res.status;
      this.result = res.json();
    });

request payload
form data

http://egapool.hatenablog.com/entry/2015/07/28/225658

http://stackoverflow.com/questions/1714786/querystring-encoding-of-a-javascript-object