2017-07-31 263 views
0

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

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/‌​…;" 
} 
+0

你是不是想发送整个列表或只是一个?还显示通过电线发送的JSON数据字符串。 – Nkosi

+0

我无法设计它,所以我没有发布它 – Jones

+0

我的目标是发送一个完整的列表,但我将Dto从ObjaveListDto更改为Objave Dto,因此我可以缩小问题的范围 – Jones

回答

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)); 
0

日期时间有问题抽动。让它可以为空(DateTime?)并用它来测试。您可能会填写所有其他属性,并且日期时间将保持为空。如果这是问题,请确保您的客户端发送您的模型联编程序可以识别的日期时间格式。