在C#中使用相同的参数名称发送POST请求

时间:2014-10-12 13:07:18

标签: c# rest http-post

我想发送带有许多同名参数的POST请求:

FormUrlEncodedContent content = new FormUrlEncodedContent(new [] {
  new KeyValuePair < string, string > ("group_id", "344"),
    new KeyValuePair < string, string > ("group_id", "20"),
    new KeyValuePair < string, string > ("group_id", "456")
});


HttpResponseMessage response = await _httpClient.PostAsync("http://localhost/api", content);

但如果我使用上述请求,我只会收到第一个group_id的响应(具有344 ID)。您是否知道如何使用 FormUrlEncodedContent 获取“group_id [] = 344&amp; group_id [] = 20&amp; group_id [] = 456”

2 个答案:

答案 0 :(得分:2)

老问题,但花了我一些时间才弄明白,所以这就是答案:

您应该在键中使用括号,如下所示:

FormUrlEncodedContent content = new FormUrlEncodedContent(new [] {
  new KeyValuePair < string, string > ("group_id[]", "344"),
    new KeyValuePair < string, string > ("group_id[]", "20"),
    new KeyValuePair < string, string > ("group_id[]", "456")
});

答案 1 :(得分:0)

您正在使用具有相同键的多个键值对。 这通常是不允许的。 这些键值对将被忽略: new KeyValuePair<string, string>("group_id", "20"), new KeyValuePair<string, string>("group_id", "456")

期望这种输入的API必须改变其设计。