创建功能性Angular2帖子的难度

时间:2016-04-08 16:57:32

标签: spring http post angular

我正在尝试向另一个服务(一个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

有谁知道我做错了什么?

1 个答案:

答案 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