代码之家  ›  专栏  ›  技术社区  ›  Cody Popham

WebApi接受Json问题-ZenDesk

  •  2
  • Cody Popham  · 技术社区  · 7 年前

    我有以下Asp。Net Web Api v2控制器-作为一个基本示例:

        [HttpPost]
        public IHttpActionResult TestPost([FromBody]string value)
        {       
           l.TestNotify(value, "test");     
           return Ok();
        }
    

    当我用一个简单的“Hello world”将JSON请求传递给控制器时,我可以毫无问题地获得值。当我使用更复杂的JSON时,value参数返回空。

    我已经使用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
    

    {
      "ticket": {
        "url": "",
        "id": "",
        "external_id": null,
        "FromEmail": "cody",
        "via": "Mail",
      }
    }
    

    我的猜测是,这与请求之间的差异有关,但脑海中没有明显的想法。阅读请求内容的其他方法或调整我对上述http请求的理解将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Botond Botos    7 年前

    不要使用 string ,而是为输入类型创建一个类。

    这就是课堂应该是什么样子:

    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 键入而不是 一串 从您的控制器。