2017-07-31 7 views
0

私は2つのアプリケーションを持っています。最初のアプリケーションを実行すると、コントローラのpostメソッドが実行されますが、モデルまたはObjavaDto(objaveList)が見つからないため、nullです。私がvar jsonからPostmanにjsonをコピー・ペーストすると、すべてが動作します。私は何が欠けていますか?Asp.NetCore APIコントローラがJsonからデータを取得しない

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]を使用

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

+0

あなたは、リスト全体またはちょうど1を送信しようとしていますか?問題を解決したことがわかりましたかまた、ワイヤを介して送信されたJSONデータ文字列も表示します。 – Nkosi

+0

投稿できませんでしたので、私はそれをスタイルできません – Jones

+0

私の目標は全体のリストを送信することですが、ObjaveListDtoからObjave DtoにDtoを変更して問題をダウンスケールすることができます – Jones

答えて

0

あなたの返信をありがとうございました。あなたは非常に参考になり、テストする方法を私に教えてくれました。私はプロパティをコメントアウトしてテストしたところ、そのプロパティにしか幸運にも存在しないNaziv otpravka( "Rjeenje"と "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

日時は問題ですチック。 nullable(DateTime?)にしてテストしてください。おそらく、他のすべてのプロパティが満たされ、datetimeはnullのままになります。それが問題ならば、クライアントがモデルバインダーが理解できるdatetime形式を送信するようにしてください。

関連する問題