我有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",
"OglasSeOdnosiNa":"Missing Oib",
"DatumObjave":"\/Date(1501106400000)\/",
"OibPrimatelja":"37144498637",
"Dokument":"e-oglasna.pravosudje.hr/sites/default/files/ts-zg-st/…;"
}
答案 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));