我正在尝试向另一个服务(一个Spring应用程序)发送一个post请求,一个身份验证,但是我在构建一个功能性的Angular2 post请求时遇到了麻烦。我正在使用this video作为参考,这是非常新的,所以我假设信息仍然有效。我也能够毫无问题地执行get请求。
这是我的帖子请求:
export class LogIn {
authUser: string;
authPass: string;
token: any;
constructor(private _http:Http){}
onSubmit() {
var header = new Headers()
var json = JSON.stringify({ user: this.authUser, password: this.authPass })
var params2 = 'user=' + this.authUser + '&password=' + this.authPass
var params = "json=" + json
header.append('Content-Type', 'application/x-www-form-urlencoded')
this._http.post("http://validate.jsontest.com", params, {
headers: header
}).map(res => res.json())
.subscribe(
data => this.token = JSON.stringify(data),
err => console.error(err),
() => console.log('done')
);
console.log(this.token);
}
}
正在从表单中正确获取信息,我测试了几次以确保。我也使用两种不同的方法来构建json(params和params2)。当我尝试将请求发送到http://validate.jsontest.com
时,控制台会打印undefined
this.token
所在的位置。当我尝试将请求发送到Spring应用程序时,我在该方面收到错误:
Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
有谁知道我做错了什么?
答案 0 :(得分:1)
实际上你需要使用GET方法来做到这一点:
var json = JSON.stringify({
user: this.authUser, password: this.authPass
});
var params = new URLSearchParams();
params.set('json', json);
this._http.get("http://validate.jsontest.com", {
search: params
}).map(res => res.json());
请参阅此plunkr:http://plnkr.co/edit/fAHPp49vFZJ8OuPC1043?p=preview。