2016-12-31 238 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)。