Доброго времени суток, уважаемые форумчане.Имеется сайт, на который мне необходимо авторизоваться из приложения. Делаю сие отправкой POST запроса, с помощью WebRequest.
Код | public static string HttpPost(string URI, string Parameters) { System.Net.WebRequest req = System.Net.WebRequest.Create(URI); req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters); req.ContentLength = bytes.Length; System.IO.Stream os = req.GetRequestStream(); os.Write(bytes, 0, bytes.Length); os.Close(); System.Net.WebResponse resp = req.GetResponse(); if (resp == null) return null; System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); return sr.ReadToEnd().Trim(); } ***** richTextBox1.AppendText(HttpPost("https://secure.runescape.com/m=weblogin/login.ws", "username=shurik3d&password=medic&submit=login&mod=www&ssl=0&dest="));
|
Судя по снифферу - пост проходит как надо, редиректы на сайте тоже отрабатывают. Но почему - то авторизация не происходит, хотя я повторяю те параметры что шлет браузер. А в ответе сервера - таки не прошла авторизация, и он мне возвращает главную страницу. Собсвенно вопрос - что я делаю не так, и как авторизоваться на данной странице?
PS: www.runescape.com - терзаемый сайт собственно.
Добавлено @ 15:46
Код | public static string HttpPost(string URI, string Parameters) { var req = (HttpWebRequest)WebRequest.Create(URI); req.AllowAutoRedirect = true; req.UserAgent = "User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)"; req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; req.Timeout = 10000; byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters); req.ContentLength = bytes.Length; System.IO.Stream os = req.GetRequestStream(); os.Write(bytes, 0, bytes.Length); os.Close(); System.Net.WebResponse resp = req.GetResponse(); if (resp == null) return null; System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); return sr.ReadToEnd().Trim(); }
|
Попробовал вот так - тоже облом. |