views:

169

answers:

3

Hello, everybody. I need to "Post" some data to an external website using HttpWebRequest object from my application(desktop) and get a response back into my application through HttpWebResponse object. But the webpage on which i m posting data have textboxes which have dynamic names. how can i get the name of those textboxes and post data in httpwebresquest.

for example when i load the page the textbox name is like this "U2FsdGVkX183MTQyNzE0MrhLOmUpqd3eL60xF19RmCwLlSiG5nC1H6wvtBDhjI3uM1krX_B8Fwc" but when i refresh the page name change to this "U2FsdGVkX182MjMwNjIzMPAtotst_q9PP9TETomXB453Mq3M3ZY5HQt70ZeyxbRb118Y8GQbgP8"

Thanks for any suggestions.

A: 

You could et those names by XPath e.g. and user them like:

byte[]  data = new ASCIIEncoding().GetBytes("textBoxName1=blabla");
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/myservlet");
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.ContentLength = data.Length;
Stream myStream = httpWebRequest.GetRequestStream();
myStream.Write(data,0,data.Length);
myStream.Close();
thelost
A: 
var request = WebRequest.Create("http://foo");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
    writer.Write("field=value");
}
Darin Dimitrov
but i dont know the field name in advance.thats the issue????the field names are not hardcoded they are changing whenever the page load or refreshes.
A: 

It looks like you will have to get the page with a HttpWebRequest and parse the content of the corresponding HttpWebResponse to find out the names of text boxes. Then you submit the values to the page by using another HttpWebRequest.

So basically, what you need to do is the following:

  1. Issue a HttpWebRequest with GET method to the URL where the page with text boxes is located
  2. Get the response stream of the HttpWebResponse
  3. Parse the page contained in the response stream and get the names of text boxes. You can use Html Agility Pack for this purpose (http://htmlagilitypack.codeplex.com/).
  4. Issue a HttpWebRequest with POST method, with content type set to "application/x-www-form-urlencoded" and key-value pairs as the content.
Boris Mesetovic