Programmatic HTTP Post returns Empty Form fields on ASPX Server Side

E

ERobishaw

Using Winform app writing a HTTP Post using the following... on the
server side, I get no form fields. Request.Form.AllKeys.Length = 0.

If I put the field/value paris in the URL I can use
Request["FieldName"] to retrieve the values,
but POST doesn't work.

There is NO Proxy... the only thing I can think is that ASP.NET is
somehow filtering out the page because I'm obviously not posting the
viewstate??? Seems like there was some setting for this, but I can't
recall what it is.


HttpWebRequest request = (HttpWebRequest)
HttpWebRequest.Create("http://localhost/test.aspx");
WebResponse response;

string commentField = "ABCD=123";

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(commentField);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
response = request.GetResponse();


//SERVER SIDE, test.aspx page
Page_Load()
{
//BREAK POINT SET HERE>>>>
//Request.Form.AllKeys returns nothing (0 length)
}
 
A

Anthony Jones

ERobishaw said:
Using Winform app writing a HTTP Post using the following... on the
server side, I get no form fields. Request.Form.AllKeys.Length = 0.

If I put the field/value paris in the URL I can use
Request["FieldName"] to retrieve the values,
but POST doesn't work.

There is NO Proxy... the only thing I can think is that ASP.NET is
somehow filtering out the page because I'm obviously not posting the
viewstate??? Seems like there was some setting for this, but I can't
recall what it is.


HttpWebRequest request = (HttpWebRequest)
HttpWebRequest.Create("http://localhost/test.aspx");
WebResponse response;

string commentField = "ABCD=123";

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(commentField);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
response = request.GetResponse();


//SERVER SIDE, test.aspx page
Page_Load()
{
//BREAK POINT SET HERE>>>>
//Request.Form.AllKeys returns nothing (0 length)
}

Viewstate won't impact this code. The request object is a lower level
object provided by the HttpContext that is present in any handler be that an
ASPX or ASHX etc.

I can't explain why AllKeys has a length of 0, your calling code looks good.
Have you tried the System.Net.WebClient object instead. It handles a lot of
this stuff for you:-

NameValueCollection fields = new NameValueCollection();
WebClient client = new WebClient();
fields.Add("ABCD", "123");
String response = client.UploadValues("http://localhost/test.aspx", fields);
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top