Matt Facer
Matt Facer

Reputation: 3105

extract variables and values from http post / string c#

I am trying to read in POST data to an ASPX (c#) page. I have got the post data now inside a string. I am now wondering if this is the best way to use it. Using the code here (http://stackoverflow.com/questions/10386534/using-request-getbufferlessinputstream-correctly-for-post-data-c-sharp) I have the following string

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

As this is now in a string, I am splitting based on a space.

    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());
    }

The trouble comes when a value has a space in it. For example, variable3="foo 3" upsets the code.

Is there something better I should be doing to parse the incoming http post variables within the string??

Upvotes: 0

Views: 711

Answers (1)

yamen
yamen

Reputation: 15618

You might want to treat it as XML directly:

// 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);
}

Of course you can change that last line to whatever you want, the above is a rough example.

Upvotes: 2

Related Questions