angular2 でHTTP POST(をクライアントとして実行)したときのエラー
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