2016-04-08 60 views
0

我想发送一个帖子请求到另一个服务(一个Spring应用程序),一个身份验证,但我在建立一个功能Angular2发布请求时遇到了麻烦。我使用this video作为参考,这是非常新的,所以我认为这些信息仍然有效。我也能够执行没有问题的获取请求。难以创建功能Angular2的帖子

这里是我的POST请求:

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

事实上,你需要使用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

+0

谢谢,这工作!在哪些情况下我必须使用http.post? – napstablook