Программная авторизация на сайте. - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте.Мне нужно программно залогиниться до одного сайта.Уже мучаюсь неделю,застрял на одном месте. Код программы ниже:
Листинг программы
  1. public HttpWebResponse GetPage(string url, CookieCollection cookies)
  2. {
  3. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
  4. 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, */*";
  5. request.Headers.Add("Accept-Language", "ru-RU");
  6. 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)";
  7. request.AllowAutoRedirect = false;
  8. request.CookieContainer = new CookieContainer();
  9. if (cookies != null)
  10. {
  11. request.CookieContainer.Add(cookies);
  12. }
  13. return (HttpWebResponse)request.GetResponse();
  14. }
  15. public HttpWebResponse PostPage(string url, byte[] postData, CookieCollection cookies)
  16. {
  17. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
  18. request.Method = "POST";
  19. 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, */*";
  20. request.Headers.Add("Accept-Language", "ru-RU");
  21. 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)";
  22. request.ContentType = "application/x-www-form-urlencoded";
  23. //request.AllowAutoRedirect = false;
  24. request.ContentLength = postData.Length;
  25. request.GetRequestStream().Write(postData, 0, postData.Length);
  26. request.CookieContainer = new CookieContainer();
  27. if (cookies != null)
  28. {
  29. request.CookieContainer.Add(cookies);
  30. }
  31. return (HttpWebResponse)request.GetResponse();
  32. }
  33. public HttpWebResponse PostPage(string url, string postString, CookieCollection cookies)
  34. {
  35. byte[] byteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(postString);
  36. return PostPage(url, byteArr, cookies);
  37. }
  38. public HttpWebResponse PostPage(string url, string postString)
  39. {
  40. return PostPage(url, postString, null);
  41. }
  42. public HttpWebResponse GetPage(string url)
  43. {
  44. return GetPage(url, null);
  45. }
  46. public string GetResponseContent(HttpWebResponse response)
  47. {
  48. StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(65001));
  49. string result = reader.ReadToEnd();
  50. reader.Close();
  51. return result;
  52. }
  53. private void VKLogin(string mail, string password)
  54. {
  55. HttpUtility http = new HttpUtility();
  56. // Формируем данные POST-запроса
  57. StringBuilder query = new StringBuilder();
  58. query.Append("user=" + mail);
  59. query.Append("&password=" + password);
  60. query.Append("&a=2&ajax=1&rnd=673&_tp_=xml");
  61. // Отправляем запрос и получаем ответ
  62. logAppend("Loading http://clubtone.net...");
  63. HttpWebResponse response = tryPostPage("http://clubtone.net", query.ToString());
  64. string result_s = http.GetResponseContent(response);
  65. .........
  66. .........
  67. ........
Как я понимаю в респонсе должна быть уже авторизованная страницы с моим логином, но в result_s получаю не авторизованную страницу, с кнопками "Вход" и "Регистрация". В чем может быть проблема ? Может проблема в постройке POST Запроса или Куки ? Очень нужен ответ.Спасибо!

Решение задачи: «Программная авторизация на сайте.»

textual
Листинг программы
  1.  private void LoginOnSite()
  2.         {
  3.             string login = "Логин на сайте";
  4.             string pass = "Пароль на сайте";
  5.             string html = "";
  6.  
  7.             webBrowser.Navigate(urlMySite);
  8.             while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
  9.                 Application.DoEvents();
  10.             webBrowser.Document.All["LoginTxt"].InnerText = login;
  11.             webBrowser.Document.All["PasswordTxt"].InnerText = pass;
  12.             webBrowser.Document.All["LoginImgBtn"].InvokeMember("click");
  13.  
  14.  
  15.             HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(urlMySite);
  16.             HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
  17.             StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
  18.  
  19.             html += myStreamReader.ReadToEnd();
  20. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут