我遇到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);
}
答案 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工作得很好......