Well I have partially did it. I wrote LogIn mechanism for ASP pages.
The code is below:
private void button1_Click(object sender, EventArgs e)
{
textBox.Clear();
HttpWebRequest webRequest = WebRequest.Create(loginURL.Text) as HttpWebRequest;
StreamReader responseReader = new StreamReader(
webRequest.GetResponse().GetResponseStream()
);
string responseData = responseReader.ReadToEnd();
responseReader.Close();
string viewState = ExtractViewState(responseData);
string postData =
String.Format(
paramBox.Text,
viewState, userName.Text, userPasswd.Text
);
CookieContainer cookies = new CookieContainer();
webRequest = WebRequest.Create(loginURL.Text) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.CookieContainer = cookies;
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(postData);
requestWriter.Close();
webRequest.GetResponse().Close();
webRequest = WebRequest.Create(secretURL.Text) as HttpWebRequest;
webRequest.CookieContainer = cookies;
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
responseData = responseReader.ReadToEnd();
responseReader.Close();
textBox.Text = responseData;
}
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
)
);
}
The code works well. It's written based on examples from many posts & forums.
When I'm skipping __VIEWSTATE param and instead of this I'm putting login form data for PHP based webpages, I can connect to them too.
But I have another problem.
I thought that the site, I'm trying to connect and grab some data from is an ASP page. I was wrong :laugh: The page is based on JAVA servlets.
I've stucked again and I don't know how can I connect to this kind of page.
I'd like to know what have I to change in my code, to connect to the servlet based webpage?