如何使用C#将POST数据作为数组

我正在使用C#开发一个ASP.NET处理程序,它接收从外部Flash程序发布的数据数组。 如何将数据用作数组? 似乎ASP.NET中使用的HTTP上下文自动对发布数据进行html解码,使其成为一个简单的字符串。 在这种情况下,分隔符是逗号(可能它总是一个逗号,以前从未使用过它)。

似乎我需要两件事:

1)以html编码forms获取数据的方法,其中用作数组分隔符的逗号只能表示真实数组而不是客户表单输入(客户输入逗号此时将保持编码状态)。

2)一种模拟PHP print_r()var_dump()函数的方法(我自己不知道PHP,但我知道那里有诀窍)将变量转储到数组中。

因此,任何有关如何做任何事情的帮助将不胜感激。 提前致谢!

编辑1:发布的数据可以是例如一堆地址,邮政编码和可选的额外信息。 例如address=testroad%5F5,another%5Ftestroad%5F6&postalcode=12345,56789&extrainfo=,firstwasempty 。 在该示例中,有两个地址( %5F等于空格),两个邮政编码,但只有第二个地址包含extrainfo作为逗号为空之前的空格。 再一次,由于英语不是我的母语,问题是可能的客户编写的逗号在解码后与实际的数组拆分逗号混合在一起。

 public void ProcessRequest(HttpContext context) { using (var reader = new StreamReader(context.Request.InputStream)) { string postedData = reader.ReadToEnd(); foreach (var item in postedData.Split(new [] { '&' }, StringSplitOptions.RemoveEmptyEntries)) { var tokens = item.Split(new [] { '=' }, StringSplitOptions.RemoveEmptyEntries); if (tokens.Length < 2) { continue; } var paramName = tokens[0]; var paramValue = tokens[1]; var values = paramValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var value in values) { var decodedValue = context.Server.UrlDecode(value); // Do something with the decoded value which corresponds to paramName } } } } 

我遇到了同样的麻烦并找到了这篇文章,但刚才我发现了一个更好的方法。

您应该在所有POST变量上添加相同的名称,因此要发布的数据是:

地址= AddressValue1&地址= AddressValue2&地址= AddressValue3

在C#代码脚本中,您可以使用以下命令访问数据参数:

 string[] addresses = this.Request.Form.GetValues("address"); foreach (string address in addresses) { // Your code here ... } 

我发现

 Request.Params[null] 

指的是在C#ASP.NET中发布到页面的RAW数据。

检查HttpRequest.InputStream属性: http : //msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx