我正在尝试将对象发布到我的API,但它无法在那里使用。
客户代码
const url = '/odata/StammVersicherter';
const headers = new Headers();
headers.append('Content-Type', 'application/json');
const requestBody = JSON.stringify(data);
return this._http.post(url, requestBody , { headers: headers }).map(
res => {
// do something with the response
}
);
Api代码
public async Task<IHttpActionResult> Post([FromBody]Data data)
{
string content = await this.Request.Content.ReadAsStringAsync(); // empty!
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_dataContext.Data.Add(data);
await _dataContext.SaveChangesAsync();
return Created(versicherter);
}
当此调用到达我的api方法时,Data对象为null。有什么快速的想法吗?
答案 0 :(得分:1)
当您使用POST请求时,您应该继续使用 “content-type”:“application / x-www-form-urlencoded”,
下面是javascript中的参考代码。
var settings = {
"async": true,
"crossDomain": true,
"url": "your URL HERE",
"method": "POST",
"processData": false,
"contentType": false,
"content-type": "application/x-www-form-urlencoded",
"data": {
"username": "srussell@org.com.au.test",
"password": "test",
} }
$.ajax(settings).done(function (response) {
console.log(response);
});
答案 1 :(得分:1)
那么你可以发送如下数据,但你的json数据键字段应该与服务器端的模型匹配。
var settings = {
"async": true,
"crossDomain": true,
"url": "Your URL",
"method": "POST",
"headers": {
"content-type": "application/json",
"cache-control": "no-cache",
},
"processData": false,
"data": "{\"Name\":\"abc\",\"EMail\":\"abc@xyz.com\"}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
答案 2 :(得分:0)
正如我对原始问题的评论所示:JSON Serializer遇到错误导致内容为空