it works fine on my machine (windows 2003 + SP1)
1. TestSubmit.aspx:
<html>
<body>
<form runat="server">
<asp:TextBox id="txt" runat="server" Text="123" />
<asp:Button id="btn" runat="server" Text="Submit" OnClick="DoSubmit" />
</form>
<script language="C#" runat="server">
void DoSubmit(Object sender, EventArgs e)
{
Page.Response.Write("btn is clicked, txt's value is " + txt.Text);
}
</script>
2. TestSubmit.cs
using System;
using System.IO;
using System.Text;
using System.Net;
class TestSubmit
{
static void Main()
{
string URL = "http://localhost/labs/TestSubmit.aspx";
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
string data="__VIEWSTATE=dDwyMDE4OTI5MDg4Ozs%2B1%2BkI%2FHI0ADRnHgGL%2F%2F4aWuHYkI8%3D&txt=abcd&btn=Submit";
ASCIIEncoding encoding=new ASCIIEncoding();
byte[] byte1=encoding.GetBytes(data);
myRequest.Referer=URL;
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.Method="POST"; //<---try uppercase here
myRequest.ContentLength=byte1.Length; //use the byte[] length
Console.WriteLine("Post Length:{0}",myRequest.ContentLength);
Stream newStream = myRequest.GetRequestStream();
newStream.Write(byte1,0,byte1.Length);
newStream.Close();
HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();
Stream st = response.GetResponseStream();
StreamReader reader = new StreamReader(st);
String html = reader.ReadToEnd();
reader.Close();
st.Close();
response.Close();
Console.WriteLine("response html:{0}",html);
}
}
3. output:
Post Length:92
response html:btn is clicked, txt's value is abcd<html>
<body>
<form name="_ctl0" method="post" action="TestSubmit.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE" value="dDwyMDE4OTI5MDg4Ozs+1+kI/HI0ADRnH
gGL//4aWuHYkI8=" />
<input name="txt" type="text" value="abcd" id="txt" />
<input type="submit" name="btn" value="Submit" id="btn" />
</form>
it also works if you use
string data= "__EVENTTARGET=btn&__EVENTARGUMENT=&txt=abcd";