WebClient中的POST数组(C#/ .net)

我有一个.net应用程序,它有一个WebRequest,它给POST添加了多次相同的键,从而使它成为PHP,Java Servlets等眼中的数组。我想重写这个使用WebClient,但如果我多次使用相同的键调用WebClient的QueryString.Add(),它只是附加新值,使用逗号分隔的单个值而不是值数组。

我使用WebClient的UploadFile()发布我的请求,因为除了这些元数据,我想要一个文件发布。

如何使用WebClient发布值数组而不是单个值(逗号分隔值)?

干杯

PHP只是使用解析器将以数组格式发送的多个值转换为数组。 格式为[]

因此,如果您希望从$_GET接收PHP中的数组,请添加以下查询参数: x[key1]x[key2] 。 PHP中的$_GET['x']将是一个包含2个项目的数组: ["x"]=> array(2) { ["key1"]=> ["key2"]=> }

编辑 – 您可以尝试以下扩展方法:

 public static class WebClientExtension { public static void AddArray(this WebClient webClient, string key, params string[] values) { int index = webClient.QueryString.Count; foreach (string value in values) { webClient.QueryString.Add(key + "[" + index + "]", value); index++; } } } 

并在代码中:

 webClient.AddArray("x", "1", "2", "3"); webClient.AddArray("x", "4"); 

或手动:

 webClient.QueryString.Add("x[key1]", "4"); webClient.QueryString.Add("x[key2]", "1"); 

没有错误检查等。你可以自己做:)