2017-08-20 63 views
-1

user.service.ts角2 HTTP Web發佈的API 2總是收到空

import { Injectable } from '@angular/core'; 
import { Http, Response, Headers } from '@angular/http'; 
import 'rxjs/Rx'; 
import { Observable } from 'rxjs/Observable'; 

import * as myGlobal from '../global'; 

@Injectable() 
export class UserService { 

constructor(private http: Http) {} 

postUser(user:any[]) { 
    let headers = new Headers({ 'Content-Type': 'application/x-www-form- 
    urlencoded; charset=UTF-8', 'Accept' : 'application/json' }); 
    return this.http.post(myGlobal.myUrl + 'user/insert', JSON.stringify(user) 
    , {headers: headers}); 
    } 
} 

user.component.ts

submitForm(data: any):void{ 
    console.log(data); 
    this._service.postUser(data) 
    .subscribe(
    (response) => console.log(response), 
    (error) => console.log(error) 
); 
} 

的Web API

[HttpPost] 
[Route("api/user/insert")] 
public HttpResponseMessage insertVehiclesDevice(modelUser data) 
{ 
    //stuff 
    return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; 
} 

當我調用方法插入,數據總是空到達或零, 我不得不改變{ 'Accept' : 'application/json' }{ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Accept' : 'application/json' },因爲它給了我405錯誤

在此先感謝大家

+0

我認爲這個問題可能有助於https://stackoverflow.com/a/45782818/2708210不太確定,但可能作爲內容類型似乎是我的問題 –

回答

1

問題是在這裏:

return this.http.post(myGlobal.myUrl + 'user/insert' 
    , JSON.stringify(user) 
    , {headers: headers}); 

將其更改爲:

return this.http.post(myGlobal.myUrl + 'user/insert' 
    , JSON.stringify(user) 
    , {headers: headers}) 
    .map( (response: Response) =>response.json()) 
    .catch(this._errorHandler); 

錯誤處理程序:

_errorHandler(error:Response){ 
    console.log(error); 
    return Observable.throw(error || "Internal server error"); 
} 

你會需要一些進口:

import { Http, Response } from '@angular/http'; 
    import { Observable } from 'rxjs/Observable'; 
    import 'rxjs/add/operator/map'; 
    import 'rxjs/add/operator/catch'; 
    import 'rxjs/add/observable/throw'; 
+0

感謝您的回答,我試了代碼,但是現在所有的數據都是空的'firstName:null,country:0'。 也給了我以下錯誤'SyntaxError:在Object.parse JSON輸入的意外結束()' –

+0

您給出了答案,意味着您的JSON格式不正確 –

0

更改您的輸入值user,通過的data's name和接受的參數必須具有相同的名稱。在postUser中,您的數據名稱爲user。同樣在API也一樣。

[HttpPost] 
[Route("api/user/insert")] 
public HttpResponseMessage insertVehiclesDevice(modelUser user) 
{ 
    //stuff 
    return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; 
}