Angular 2 Http.Post不传递数据

时间:2016-04-28 08:49:28

标签: http post angular

我遇到Http.Post传递数据的问题。我收到错误405(Method Not Allowed),这意味着API中没有方法。这是事实,当我从Post方法中删除参数时,一切正常。

Angular 2服务代码:

SaveChoice(QuestionId:number, ItemId:number):Observable<boolean>{
    let body = JSON.stringify({ QuestionId,ItemId });
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });


    return this._http.post('http://localhost:42055/api/Question',body,options)
            .map((response:Response) => <boolean>response.json());
}

我使用.subscribe()我主要的TS文件。

.Net Web API代码:

    [HttpPost]
    public bool Post(int QuestionId, int ItemId)
    {
        return _statisticsService.AddNewRecord(QuestionId,ItemId);
    }

2 个答案:

答案 0 :(得分:0)

我会看到几件事要检查:

  • 资源的路径。它是正确的,是否与您的Post方法相对应?
  • 我认为你的方法输入是不正确的,因为你会收到类似的东西:

    { "QuestionId": "some question id", "ItemId": "some item id" }
    

    所以你应该使用一个类作为包含这两个属性的methoid参数。

我认为在你的情况下,问题来自第二个选项。您的服务器无法将收到的有效负载映射到您的输入参数。因此它将返回405错误代码。

答案 1 :(得分:0)

Okey问题出现在服务器端。 我发送的是一个对象,因此Server也期望并且不会对这两个分开的值进行对象。

因此,如果我们将服务器端更改为:

    [HttpPost]
    public bool Post(test data)
    {
       return _statisticsService.AddNewRecord(data.QuestionId,data.ItemId);
    }

班级考试是:

public class test
{
    public int QuestionId { get; set; }
    public int ItemId { get; set; }
}

Eveerything工作得很好......