2016-09-27 85 views
0

我正在尝试使用angular 2来调用web api身份验证,如下所示。但我得到错误Angular 2在Web API 2上的HTTP发布 - 错误请求

“无法加载资源:服务器400(错误请求)的状态回答”

身份验证服务是本地IIS服务器上运行。

这里有什么缺失吗?

import { Injectable } from '@angular/core'; 
import {Http, Response, RequestOptions, Request, RequestMethod, Headers, HttpModule} from '@angular/http'; 

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 



@Injectable() 
export class AuthService { 
    public token: string; 

    constructor(private http: Http) { 
     var currentUser = JSON.parse(localStorage.getItem('currentUser')); 
     this.token = currentUser && currentUser.token; 
    } 

    login(username, password): Observable<boolean> { 
     var authObj = { 
      username: username, Password: password, grant_type : 'password' 
     } 

     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options = new RequestOptions({ headers: headers }); 

     return this.http.post('http://localhost/Authentication/oauth/Token', JSON.stringify({ username: username, Password: password, grant_type: 'password' }), options) 
      .map((response: Response) => { 

       let token = response.json() && response.json().token; 

       if (token) { 
        //set the token property 
        this.token = token; 
        //user username and jwt token in local storage to keep user loggen in between page refreshes 
        localStorage.setItem('currentUser', JSON.stringify({ username: username, token: token })); 
        //return true to indicate the successful login 
        return true; 
       } else { 
        //return false to indicate failed login 
        return false; 
       } 
      }); 
     } 

    logout(): void { 
     this.token = null; 
     localStorage.removeItem('currentUser'); 
    } 
} 
+0

您不能调试应用程序以查看api正在生成哪种异常或错误。在我看来你的API正在响应一些错误。逐步调试将是一个不错的主意。你也可以发布你的API代码吗? – Abhinandan

+1

这可能是由于无法匹配的请求正文。只需检查预计的内容和您发送的内容。可能是,会有任何参数丢失,或者它将期望body为Object而不是字符串。 – Manish

+0

尝试添加你的webapi运行的http:// localhost旁边的确切端口 – Sanket

回答

0

尝试与此 -

让头=新集管({ '内容 - 类型': '应用程序/ x WWW的形式进行了urlencoded'});