我目前正在测试使用 ASP.NET Web API 编写 RESTful API。我在客户端上使用 RestSharp 来模拟不同的调用。
我想提交一个应用程序ID查询字符串,正文应该是“Log”类型的集合。每次,服务器收到的body中发布的应用程序ID始终为NULL。
服务器上的代码:
public class LogsController : ApiController
{
public HttpStatusCode Post(Guid ID, [FromBody] List<Log> logs)
{
if (logs != null)
return HttpStatusCode.OK;
else
return HttpStatusCode.PreconditionFailed;
}
}
public class Log
{
public Guid ErrorId { get; set; }
}
客户端代码:
static void Main(string[] args)
{
var client = new RestClient("http://localhost:36146/api");
var json = JsonConvert.SerializeObject(new List<Log>()
{
new Log { ErrorId = Guid.NewGuid()}
});
var request = new RestRequest("Logs", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddParameter("ID", Guid.NewGuid(), ParameterType.QueryString);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json; charset=utf-8");
request.AddBody(json);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Console.Read();
}
public class Log
{
public Guid ErrorId { get; set; }
}
我以为我已经成功了,但是无论我现在做什么,服务器上的“logs”参数始终为 NULL。
最佳答案
我想我已经找到问题了。
RestSharp 在填充请求正文时隐式使用 JsonSerializer。由于我也被称为序列化器,我认为它导致了格式问题。
我已经删除了对序列化器的调用,现在我收到了服务器返回的 200。
快乐的日子。
关于api - Rest API 调用,使用 RestSharp 调用 ASP.NET Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21771444/