【问题标题】:C# POST Request with arrays being sent发送数组的 C# POST 请求
【发布时间】:2016-12-31 02:27:28
【问题描述】:

我想在 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);
    }

但我无法将参数设为数组,请帮忙,谢谢

【问题讨论】:

  • @CodingYoshi 不完全是,我的问题来自我可以让参数成为数组的事实。而且您发布的解决方案也不使用数组。感谢您的尝试

标签: c# post webclient


【解决方案1】:

您似乎要求将参数放在数组中,但它们实际上显示为“子类”。如果值在一个数组中,它们应该有方括号。

但是,使用匿名(或真实)类很容易实现这两个结果(我更喜欢将属性名称嵌入引用文本中(使将来的修改更容易实现)。

        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)。

【讨论】:

    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2011-05-22
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多