使用c#的HTTP post表单 - 也是表单的名称

时间:2011-01-26 21:59:38

标签: c# asp.net http-post

我正在使用以下代码在点击按钮时将数据发布到URL。我需要能够发送一个表单名称和这些数据。有什么建议吗?

string url = "http://www.someurl.com";
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    string proxy = null;

    string data = String.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}", 
                    txtName.ClientID, txtName.Text, 
                    txtEmail.ClientID, txtEmail.Text,
                    txtLanguages.ClientID, txtLanguages.Text,
                    txtPhone.ClientID, txtPhone.Text,
                    txtAdditional.ClientID, txtAdditional.Text);
    byte[] buffer = Encoding.UTF8.GetBytes(data);

    req.Method = "POST";
    req.ContentType = "application/x-www-form-urlencoded";
    req.ContentLength = buffer.Length;
    req.Proxy = new WebProxy(proxy, true); // ignore for local addresses 
    req.CookieContainer = new CookieContainer(); // enable cookies 

    Stream reqst = req.GetRequestStream(); // add form data to request stream 
    reqst.Write(buffer, 0, buffer.Length);
    reqst.Flush();
    reqst.Close();

3 个答案:

答案 0 :(得分:0)

如果您的意思是操作,只需将其附加到网址即可。

答案 1 :(得分:0)

您可以将所需的任何键/值对附加到POST数据 - 无论是控件名称,表单名称,表单操作还是页面上任何位置都无关紧要。

顺便说一句,如果您要手动构建POST数据,则应对值进行URL编码,例如

string data = String.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}", 
                txtName.ClientID, HttpUtility.UrlEncode(txtName.Text),
                ...

答案 2 :(得分:0)

如果您使用不同的表单管理不同的活动,您还可以在表单与正在执行的活动之间发送隐藏变量,这样您就可以评估隐藏的隐藏值,并根据它进行操作。

或者将值和名称放在提交按钮中......它也会作为叛变变量进入您的脚本。