2017-01-20 238 views
0

我試圖將json數據推送到web服務;將Json傳遞給Web服務

這是我的樣本數據;

{ 
     "data" : { 
     "username" : "demo", 
     "password" : "demo1082*098/*42a", 
     "LoginToken" :  "AAFF540EC55DASEFBE7E3D8404AED31F6DD30CA2BFCE2433B9475E696GG38730" 
     } 
    } 

這是我的web服務;

public string Post([FromBody]string data) 
List<Login> datas = JsonConvert.DeserializeObject<List<Login>>(data); 

錯誤;類型 'System.ArgumentNullException' 的例外發生在Newtonsoft.Json.dll但在用戶代碼中沒有處理

數據顯示爲NULL

我使用的WebAPI,RESTful API,因此C#,視覺STD 2015年

在此先感謝。

編輯;

我正在使用DHC chrome擴展到POST數據。 HEADER; 內容類型:application/json BODY;

{ 
      "data" : { 
      "username" : "demo", 
      "password" : "demo1082*098/*42a", 
      "LoginToken" :  "AAFF540EC55DASEFBE7E3D8404AED31F6DD30CA2BFCE2433B9475E696GG38730" 
      } 
     } 

錯誤;

500內部服務器錯誤

編輯; 我發現因「字符串」類型的數據而導致的錯誤。當我將其更改爲「動態」時,我解決了這個問題。有人可以推薦我一個關鍵字,而不是動態?

+1

請分享你如何傳遞價值的網絡服務,代碼 –

+0

@IkramTurgunbaev謝謝。我正在使用POST方法。 – NewPHPer

+1

@NewPHPer檢查我的解決方案,它只是另一種方式來做到這一點,萬一你想避免動態關鍵字 – abhi

回答

3

1)你必須創建一個像

public class LoginData 
{ 
    public string username {get;set;} 
    public string password {get;set;} 
    public string LoginToken {get;set;} 
} 

,並在諸如以下

public string Post([FromBody]LoginData data) 

2)我看到你已經創建了一個類名Login(以下行您的Web服務使用一個類如果你在json中有單條記錄)

Login datas = JsonConvert.DeserializeObject<Login>(data); 

所以你也可以使用

public string Post([FromBody]Login data) 
+0

謝謝!它解決了 – NewPHPer

-1

一個做如下的方式,

創建請求類

public class Data 
{ 
    public string username { get; set; } 
    public string password { get; set; } 
    public string LoginToken { get; set; } 
} 

public class RootObject 
{ 
    public Data data { get; set; } 
} 

,並在您的文章的方法

public string Post([FromBody]RootObject data) 

現在,你甚至不必反序列化它。並可以直接作爲課程的財產進入。

+0

我可以知道投票的原因,是否有改進需要 – abhi

+0

我投票。你的答案適合我。謝謝。 – NewPHPer

相關問題