发送数组的C#POST请求

时间:2016-12-31 02:27:29

标签: c# post webclient

我想在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作为一个数组,请帮助,谢谢

1 个答案:

答案 0 :(得分: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序列化程序(来自System.Web.Extensions),但您可以使用您选择的序列化程序(我们通常使用NewtonSoft的JsonConvert)。