使用Http Post的Typescript&Angular问题新手

我是Angular和Typescript的新手,我尝试创build一个简单的login页面。 我在用户按下“login”button时调用的打字稿中创build了一个服务。 包含用户名和密码的文本框与模型绑定正确,但是当我将请求发送到用C#编写的后端时,它不会触及断点,我怀疑这是由于消息在线路上发送的格式。

因此,使用PostMan ,我可以调用服务,并获得一个access_token当在PostMan请求导出到代码时,这是PostMan变体的样子:

 var request = require("request"); var options = { method: 'POST', url: 'http://localhost:8081/login', headers: { 'postman-token': '34dd4d0f-ff16-db4f-ebae-dab945729410', 'cache-control': 'no-cache', 'content-type': 'application/x-www-form-urlencoded' }, form: { username: 'test', password: 'test', grant_type: 'password' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); 

这是我的手稿代码

 login(userName: string, password:string) : Observable<boolean> { var headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded') var content = JSON.stringify({ username: userName, password: password, grant_type: this.grant_type }); return this.http.post(this.authenticationEndpoint, content, {headers: headers}) .map((response:Response) => { let token = response.json() && response.json().token; if(token){ //this.token = token; localStorage.setItem('user', JSON.stringify({userName: userName, token:token})); return true; } return false; }); } 

这会导致Visual Studio代码中出现错误,该错误说:

在这里输入图像说明

我真的不知道我应该如何解释这个错误消息,但由于我的web服务中的方法没有被调用,我敢肯定,它与HTTP标头或Http Post的格式有关。任何想法?

使用URLSearchParams作为请求和angular度的主体将自动将内容types设置为application / x-www-form-urlencoded

 import { URLSearchParams } from "@angular/http" let body = new URLSearchParams(); body.set('username', username); body.set('password', password); ..... this.http.post(this.authenticationEndpoint, body).map(..)