我在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为空。我摸不着头脑,但不知道发生了什么.-
答案 0 :(得分:2)
您的Xamarin代码将MAC内容放在请求正文中(这可能适用于POST),但Web API预计参数将在查询字符串中(这是[什么] FromUri]属性正在做)。尝试将Web API方法更改为:
public string Post([FromBody]UsageLogModel usageState)