我有一个.net应用程序,它有一个WebRequest,它对POST添加了多次相同的密钥,因此在PHP,Java Servlets等眼中使它成为一个数组。我想把它重写为使用WebClient,但如果我多次使用相同的键调用WebClient的QueryString.Add(),它只会附加新值,使用逗号分隔的单个值而不是值数组。
我使用WebClient的UploadFile()发布我的请求,因为除了这些元数据,我还想发布一个文件。
如何使用WebClient发布值数组而不是单个值(以逗号分隔的值)?
干杯
的Nik
答案 0 :(得分:5)
PHP只是使用解析器将以数组格式发送的多个值转换为数组。
格式为<arrayName>[<key>]
。
因此,如果您希望从$_GET
接收PHP中的数组,请添加以下查询参数:x[key1]
和x[key2]
。 PHP中的$_GET['x']
将是一个包含2个项目的数组:["x"]=> array(2) { ["key1"]=> <whatever> ["key2"]=> <whatever> }
。
修改 - 您可以尝试以下扩展方法:
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");
没有错误检查等。您可以自己做:)