Asp.NetCore API控制器无法从Json获取数据

时间:2017-07-31 17:30:57

标签: c# json asp.net-core-webapi

我有2个应用程序,一个将数据发布到另一个应用程序。当我运行第一个应用程序时,控制器中的post方法执行但是找不到模型或ObjavaDto(objaveList),因此它为null。当我将var json中的json复制粘贴到Postman时,一切正常。我错过了什么?

var json = new JavaScriptSerializer().Serialize(objaveList[2]); 

我之所以使用[2]只是为了简单起见,因为它们有很多

string url = "http://localhost:61837/api/Objave";

string result;
using (var client = new WebClient())
      {
         client.Headers.Add("Content-Type", "application/json");
         result = client.UploadString(url, "POST", json);
      }

第二个应用程序控制器

namespace StecajeviInfo.Controllers.Api
{
     [Route("api/[controller]")]
     public class ObjaveController : Controller
     {  

       [HttpPost]
       public void Post([FromBody]ObjavaDto objaveList)
       {

       } 

     }
}
public class ObjavaDto
{
    public string OznakaSpisa { get; set; }
    public string NazivOtpravka { get; set; }
    public string NazivStecajnogDuznika { get; set; }
    public string PrebivalisteStecajnogDuznika { get; set; }
    public string SjedisteStecajnogDuznika { get; set; }
    public string OIBStecajnogDuznika { get; set; }
    public string OglasSeOdnosiNa { get; set; }
    public DateTime DatumObjave { get; set; }
    public string OibPrimatelja { get; set; }
    public string Dokument { get; set; }
}    

发送的数据如下所示

{
    "OznakaSpisa":"St-6721/2015",
    "NazivOtpravka":"Rješenje - otvaranje stečajnog postupka St-6721/2015-7",
    "NazivStecajnogDuznika":"RAIN AIR d.o.o.",
    "PrebivalisteStecajnogDuznika":"Savska 144/A, 10000, Zagreb",
    "SjedisteStecajnogDuznika":"",
    "OIBStecajnogDuznika":‌​"37144498637",
    "Oglas‌​SeOdnosiNa":"Missing Oib",
    "DatumObjave":"\/Date(1501106400000)\/",
    "OibPrimatelja"‌​:"37144498637",
    "Doku‌​ment":"e-oglasna.pra‌​vosudje.hr/sites/def‌​ault/files/ts-zg-st/‌​…;"
}

2 个答案:

答案 0 :(得分:0)

日期时间有问题。让它可以为空(DateTime?)并用它进行测试。您可能会填充所​​有其他属性,并且datetime将保持为null。如果这是问题,请确保您的客户端发送模型绑定器可以理解的日期时间格式。

答案 1 :(得分:0)

谢谢大家的回复,你们非常乐于助人,让我知道如何测试。我测试了评论属性,我发现它是因为Naziv otpravka(“Rješenje”和“stečajnog”)中的特殊字符,幸运的是只存在于该属性中。

我发现这解决了问题https://stackoverflow.com/a/12081747/6231007

client.Headers["Content-Type"] = "application/json; charset=utf-8";
client.UploadDataAsync(new Uri(url), "POST", 
Encoding.UTF8.GetBytes(json));