我一直试图在最后一小时把它弄清楚,但我看不出它有什么问题
该帖子来自我使用restsharp便携式客户端编写的xamarin应用
POST http://192.168.30.103:8080/api/Order HTTP/1.1
Authorization: Basic xxxx
Content-Length: 51
Content-Type: application/json; charset=utf-8
Host: 192.168.30.103:8080
Connection: Keep-Alive
Pragma: no-cache
{"CheckinCount":1,"EventId":16630,"OrderNo":470292}
它正确地命中服务器Post API,但参数始终为null
public IHttpActionResult Post([FromBody]string source) {
dynamic data = JsonConvert.DeserializeObject(source);
int checkInCount = data.CheckinCount;
int eventId = data.EventId;
int orderNo = data.OrderNo;
return Ok();
}
我无法弄明白为什么......
答案 0 :(得分:3)
您是否始终发送相同的参数?如果是这样,你可以创建一个静态对象而不是使用动态对象吗?你传递的是EventRequest
之类的东西吗?
public class EventRequest
{
public int CheckinCount { get; set; }
public int EventId { get; set; }
public int OrderNo { get; set; }
}
您的Post
行动将变为:
public IHttpActionResult Post(EventRequest request) {
// do something with request
return Ok();
}
答案 1 :(得分:0)
来自this link的相关条目
简而言之,当发送使用服务器端的[frombody]属性获取的简单值时,必须在值前加上= 例如= testValue
但它可能更好的只是在API上使用JSON对象和对象绑定,即使是简单的值
答案 2 :(得分:0)
对我来说,这是由复选框发送的值。复选框发送 true 但对于 JSON,值必须在引号之间,即 "true"。