Xamarin RestSharp:Json对象发送到Azure Web API,结果为null响应

时间:2016-04-29 10:09:59

标签: android json xamarin restsharp

我在Xamarin上使用RestSharp使用POST与WebAPI进行通信。我可以发送一些内容并得到答复,但结果并非我的预期。

这是我在Xamarin上的代码。

                var request = new RestSharp.RestRequest ("api/device/stats", RestSharp.Method.POST);
            request.AddHeader ("Content-Type", "application/json; charset=utf-8");

            request.RequestFormat = DataFormat.Json;
            request.AddBody(new AppUsageInfo {MAC = "ASDF"}); 
            RestSharp.IRestResponse response = client.Execute (request);
            var content = response.Content;

在我的WebAPI上:

 public string Post([FromUri]UsageLogModel usageState)
    {
        //LogFunction.AddUsageLogs(usageState);
        if (usageState.MAC == null)
            return "fail";
        else
            return "success";
    }

UsageLogModel是:

public class UsageLogModel
{
    public string MAC;
}

不知何故,响应是"失败"哪个MAC为空。我摸不着头脑,但不知道发生了什么.-

1 个答案:

答案 0 :(得分:2)

您的Xamarin代码将MAC内容放在请求正文中(这可能适用于POST),但Web API预计参数将在查询字符串中(这是[什么] FromUri]属性正在做)。尝试将Web API方法更改为:

public string Post([FromBody]UsageLogModel usageState)