WebApi 正在接受 Json 个问题 - ZenDesk
WebApi Accepting Json Issues - ZenDesk
我有以下 Asp.Net Web Api v2 控制器 - 作为一个基本示例:
[HttpPost]
public IHttpActionResult TestPost([FromBody]string value)
{
l.TestNotify(value, "test");
return Ok();
}
当我通过一个简单的 "Hello world" 将 JSON 请求传递给控制器时 - 我能够毫无问题地获得该值。当我使用更复杂的JSON时,值参数returns为空。
我已经用一个使用 restsharp 的测试程序测试了相同的 JSON,它工作正常。
请求如下:
Content-Type application/json; charset=utf-8
Accept-Encoding gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept */*
Content-Length 743
这是 Json 片段:
{
"ticket": {
"url": "",
"id": "",
"external_id": null,
"FromEmail": "cody",
"via": "Mail",
}
}
我的猜测是它与请求差异有关,但没有什么明显的想法。阅读请求内容的其他方法或我对上述 http 请求的理解的调整将不胜感激。
不要使用 string
,而是为输入类型创建 class。
所以 class 应该是这样的:
public class Ticket
{
public string url { get; set; }
public string id { get; set; }
public object external_id { get; set; }
public string FromEmail { get; set; }
public string via { get; set; }
}
public class TicketRoot
{
public Ticket ticket { get; set; }
}
然后使用控制器中的 TicketRoot
类型而不是 string
。
我有以下 Asp.Net Web Api v2 控制器 - 作为一个基本示例:
[HttpPost]
public IHttpActionResult TestPost([FromBody]string value)
{
l.TestNotify(value, "test");
return Ok();
}
当我通过一个简单的 "Hello world" 将 JSON 请求传递给控制器时 - 我能够毫无问题地获得该值。当我使用更复杂的JSON时,值参数returns为空。
我已经用一个使用 restsharp 的测试程序测试了相同的 JSON,它工作正常。
请求如下:
Content-Type application/json; charset=utf-8
Accept-Encoding gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept */*
Content-Length 743
这是 Json 片段:
{
"ticket": {
"url": "",
"id": "",
"external_id": null,
"FromEmail": "cody",
"via": "Mail",
}
}
我的猜测是它与请求差异有关,但没有什么明显的想法。阅读请求内容的其他方法或我对上述 http 请求的理解的调整将不胜感激。
不要使用 string
,而是为输入类型创建 class。
所以 class 应该是这样的:
public class Ticket
{
public string url { get; set; }
public string id { get; set; }
public object external_id { get; set; }
public string FromEmail { get; set; }
public string via { get; set; }
}
public class TicketRoot
{
public Ticket ticket { get; set; }
}
然后使用控制器中的 TicketRoot
类型而不是 string
。