2016-09-27 102 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'});