从http post / string c#中提取变量和值

时间:2012-05-01 10:44:26

标签: c# asp.net .net-4.0

我正在尝试将POST数据读入ASPX(c#)页面。我现在在一个字符串中得到了帖子数据。我现在想知道这是否是使用它的最佳方式。在这里使用代码(http://stackoverflow.com/questions/10386534/using-request-getbufferlessinputstream-correctly-for-post-data-c-sharp)我有以下字符串

<callback variable1="foo1" variable2="foo2" variable3="foo3" />

由于这是一个字符串,我基于空格分裂。

    string[] pairs = theResponse.Split(' ');
    Dictionary<string, string> results = new Dictionary<string, string>();
    foreach (string pair in pairs)
    {
        string[] paramvalue = pair.Split('=');
        results.Add(paramvalue[0], paramvalue[1]);
        Debug.WriteLine(paramvalue[0].ToString());
    }

当值中有空格时会出现问题。例如,variable3="foo 3"会扰乱代码。

我应该做些什么来解析字符串中传入的http post变量?

1 个答案:

答案 0 :(得分:2)

您可能希望直接将其视为XML:

// just use 'theResponse' here instead
var xml = "<callback variable1=\"foo1\" variable2=\"foo2\" variable3=\"foo3\" />";

// once inside an XElement you can get all the values
var ele = XElement.Parse(xml);

// an example of getting the attributes out
var values = ele.Attributes().Select(att => new { Name = att.Name, Value = att.Value });

// or print them
foreach (var attr in ele.Attributes())
{
    Console.WriteLine("{0} - {1}", attr.Name, attr.Value);
}

当然,您可以将最后一行更改为您想要的任何内容,上面是一个粗略的例子。