Community discussion forum

programmatically login to a wep page

  • 7 months ago
    Hello! I have a url to a web page which requires a the login credentials which i do have.... so i want to programmatically login to that web page by passing username and password.. The code below doesn't seem to work because it doesn't pass the login page.. so anyone PLEASE HELP.. WebClient webClient = new WebClient(); // first, request the login form to get the viewstate value HttpWebRequest webRequest = WebRequest.Create("url") as HttpWebRequest; StreamReader responseReader = new StreamReader( webRequest.GetResponse().GetResponseStream() ); string responseData = responseReader.ReadToEnd(); responseReader.Close(); // extract the viewstate value and build out POST data string viewState = ExtractViewState(responseData); string postData = String.Format( "__VIEWSTATE={0}&txtUserName={1}&txtPassword={2}&btnLogin=Login", viewState, "name", "Password" ); // webClient.UploadData("url", "POST", Encoding.ASCII.GetBytes(postData)); // have a cookie container ready to receive the forms auth cookie CookieContainer cookies = new CookieContainer(); // now post to the login form webRequest = WebRequest.Create("url") as HttpWebRequest; webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.CookieContainer = cookies; // write the form values into the request message StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream()); requestWriter.Write(postData); requestWriter.Close(); //// we don't need the contents of the response, just the cookie it issues //WebResponse wb = webRequest.GetResponse(); //string gg = wb.ToString(); //wb.Close(); // now we can send out cookie along with a request for the protected page webRequest = WebRequest.Create("url") as HttpWebRequest; webRequest.CookieContainer = cookies; responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream()); // and read the response responseData = responseReader.ReadToEnd(); responseReader.Close(); } private string ExtractViewState(string s) { string viewStateNameDelimiter = "__VIEWSTATE"; string valueDelimiter = "value=\""; int viewStateNamePosition = s.IndexOf(viewStateNameDelimiter); int viewStateValuePosition = s.IndexOf( valueDelimiter, viewStateNamePosition ); int viewStateStartPosition = viewStateValuePosition + valueDelimiter.Length; int viewStateEndPosition = s.IndexOf("\"", viewStateStartPosition); return HttpUtility.UrlEncodeUnicode( s.Substring( viewStateStartPosition, viewStateEndPosition - viewStateStartPosition ) ); }
    Post was edited on 27/03/2009 11:07:39 Report abuse

Post a reply

No one has replied yet! Why not be the first?

Sign in or Join us (it's free).

We'd love to hear what you think! Submit ideas or give us feedback