2016-12-31 234 views
1

我想給在C#中的POST請求,我需要以下通過C#POST請求被髮送

"jsonrpc": "2.0", 
"id": "12345", 
"method": "my method", 
"params": { 
    "api_key": "my api key", 
    "preset_id": "my preset id" 
} 

我嘗試使用

using (WebClient client = new WebClient()) 
    { 
     byte [] response = 
     client.UploadValues ("my url", new NameValueCollection() 
     { 
      { "jsonrpc", "2.0" }, 
      { "id", "12345"}, 
      { "method", "my method"}, 
      { "params", ""} 
     }); 
     string result = System.Text.Encoding.UTF8.GetString (response); 
    } 

發送,但我不能讓PARAMS的array,請大家幫忙,謝謝

+1

可能的重複[在C#中通過WebClient發佈JSON到URL](http://stackoverflow.com/questions/15091300/posting-json-to-url-via-webclient-in-c-sharp) – CodingYoshi

+0

@CodingYoshi不完全,我的問題來自事實,我可以有參數是一個數組。你發佈的解決方案也不使用數組。感謝您的嘗試 –

回答

0

看來你是要求參數在數組中,但實際上它們顯示爲「子類」。如果這些值在一個數組中,則它們應該有方括號。

然而,這兩種結果都容易使用匿名(或實際)類(我更喜歡在中引用文本中嵌入屬性名來實現(使未來的修改更容易實現)。

 var parameters = new 
         { 
          api_key = "my api key", 
          preset_id = "my preset id" 
         }; 

     var json = new 
        { 
         jsonrpc = "2.0", 
         id = "12345", 
         method = "my method", 
         @params = parameters 
        }; 
     string sResult = (new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(json); 

的。上面的代碼將導致你表現出相同的輸出如果你想要一個實際的數組,那麼你可以將參數定義修改爲:

 var parameters = new NameValueCollection(); 
     parameters.Add("api_key", "my api key"); 
     parameters.Add("preset_id", "my preset id"); 

請注意,我用.net框架JSON序列化(從系統。 Web.Extensions),但你可以使用您選擇的序列化程序(我們通常使用NewtonSoft的JsonConvert)。