Reputation: 751
I have been trying to figure this our for the last hour, but I can't see what's wrong with it
the post is from a xamarin app that I'm writing, using restsharp portable client
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}
It hits the server Post API correctly, but the parameter is always 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();
}
I can't figure out why...
Upvotes: 1
Views: 4409
Reputation: 340
For me, it was the value of that is being sent by checkbox. Checkbox was sending true but for JSON, value must be between quotations i.e. "true".
Upvotes: 1
Reputation: 751
related entry from this link
in short, when sending simple values which are to be picked up using [frombody] attribute on the server side, you have to prefix the value with = e.g. =testValue
but its probably better just to use JSON Objects and object bindings on the API, even for simple values
Upvotes: 0
Reputation: 7705
Do you always send the same parameters? If so, could you create a static object instead of using a dynamic one? Something like an EventRequest
that you pass in instead?
public class EventRequest
{
public int CheckinCount { get; set; }
public int EventId { get; set; }
public int OrderNo { get; set; }
}
Your Post
action then becomes:
public IHttpActionResult Post(EventRequest request) {
// do something with request
return Ok();
}
Upvotes: 3