Программная авторизация на сайте. - C#
Формулировка задачи:
Здравствуйте.Мне нужно программно залогиниться до одного сайта.Уже мучаюсь неделю,застрял на одном месте.
Код программы ниже:
Как я понимаю в респонсе должна быть уже авторизованная страницы с моим логином, но в result_s получаю не авторизованную страницу, с кнопками "Вход" и "Регистрация". В чем может быть проблема ?
Может проблема в постройке POST Запроса или Куки ?
Очень нужен ответ.Спасибо!
Листинг программы
- public HttpWebResponse GetPage(string url, CookieCollection cookies)
- {
- HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
- request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
- request.Headers.Add("Accept-Language", "ru-RU");
- request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
- request.AllowAutoRedirect = false;
- request.CookieContainer = new CookieContainer();
- if (cookies != null)
- {
- request.CookieContainer.Add(cookies);
- }
- return (HttpWebResponse)request.GetResponse();
- }
- public HttpWebResponse PostPage(string url, byte[] postData, CookieCollection cookies)
- {
- HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
- request.Method = "POST";
- request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
- request.Headers.Add("Accept-Language", "ru-RU");
- request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
- request.ContentType = "application/x-www-form-urlencoded";
- //request.AllowAutoRedirect = false;
- request.ContentLength = postData.Length;
- request.GetRequestStream().Write(postData, 0, postData.Length);
- request.CookieContainer = new CookieContainer();
- if (cookies != null)
- {
- request.CookieContainer.Add(cookies);
- }
- return (HttpWebResponse)request.GetResponse();
- }
- public HttpWebResponse PostPage(string url, string postString, CookieCollection cookies)
- {
- byte[] byteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(postString);
- return PostPage(url, byteArr, cookies);
- }
- public HttpWebResponse PostPage(string url, string postString)
- {
- return PostPage(url, postString, null);
- }
- public HttpWebResponse GetPage(string url)
- {
- return GetPage(url, null);
- }
- public string GetResponseContent(HttpWebResponse response)
- {
- StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(65001));
- string result = reader.ReadToEnd();
- reader.Close();
- return result;
- }
- private void VKLogin(string mail, string password)
- {
- HttpUtility http = new HttpUtility();
- // Формируем данные POST-запроса
- StringBuilder query = new StringBuilder();
- query.Append("user=" + mail);
- query.Append("&password=" + password);
- query.Append("&a=2&ajax=1&rnd=673&_tp_=xml");
- // Отправляем запрос и получаем ответ
- logAppend("Loading http://clubtone.net...");
- HttpWebResponse response = tryPostPage("http://clubtone.net", query.ToString());
- string result_s = http.GetResponseContent(response);
- .........
- .........
- ........
Решение задачи: «Программная авторизация на сайте.»
textual
Листинг программы
- private void LoginOnSite()
- {
- string login = "Логин на сайте";
- string pass = "Пароль на сайте";
- string html = "";
- webBrowser.Navigate(urlMySite);
- while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
- Application.DoEvents();
- webBrowser.Document.All["LoginTxt"].InnerText = login;
- webBrowser.Document.All["PasswordTxt"].InnerText = pass;
- webBrowser.Document.All["LoginImgBtn"].InvokeMember("click");
- HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(urlMySite);
- HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
- StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
- html += myStreamReader.ReadToEnd();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д