Доброго времени суток. написал код для авторизации на rutracker
| Код | public void Login() { #region get-cookie
var webRequest = (HttpWebRequest)WebRequest.Create("http://login.rutracker.org/forum/login.php"); webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; webRequest.SendChunked = true; webRequest.Headers.Add(HttpRequestHeader.AcceptLanguage, "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); webRequest.Headers.Add(HttpRequestHeader.AcceptCharset, "windows-1251,utf-8;q=0.7,*;q=0.7"); webRequest.TransferEncoding = "gzip,deflate"; webRequest.Method = "POST"; webRequest.KeepAlive = true; webRequest.Timeout = 5000; webRequest.AllowAutoRedirect = false; webRequest.Referer = "http://rutracker.org/forum/index.php"; const string pwd = "1"; const string user = "1"; var postdata = String.Format("login_username={0}&login_password={1}&login={2}", HttpUtility.UrlEncode(user), HttpUtility.UrlEncode(pwd), "%C2%F5%EE%E4"); var bPostdata = Encoding.ASCII.GetBytes(postdata); webRequest.ContentLength = bPostdata.Length; // webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.Host = "login.rutracker.org"; webRequest.GetRequestStream().Write(bPostdata, 0, bPostdata.Length);
var webResp = (HttpWebResponse) webRequest.GetResponse(); // var cookie = webResp.Headers["Set-Cookie"]; Console.WriteLine(webResp.StatusCode); #endregion
Console.WriteLine(webResp.Headers["Status"]);
#region webRequest = (HttpWebRequest) WebRequest.Create("http://rutracker.org/forum/index.php"); webRequest.Proxy = new WebProxy("localhost", 8888); webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; webRequest.SendChunked = true; webRequest.TransferEncoding = "gzip,deflate"; webRequest.Method = "GET"; webRequest.Headers.Add(HttpRequestHeader.KeepAlive,"115"); webRequest.AllowAutoRedirect = true; webRequest.Referer = "http://rutracker.org/forum/index.php"; webRequest.Headers.Add(HttpRequestHeader.Cookie,cookie); webResp = (HttpWebResponse) webRequest.GetResponse(); var streamReader = new StreamReader(webResp.GetResponseStream()); Console.WriteLine(streamReader.ReadToEnd()); #endregion
}
|
но когда я дохожу до строки 29 то получаю WebException с текстом "Удаленный сервер возвратил ошибку: (411) Требуется длина." смотрю fiddler который слушает мое приложение и действительно поле "Content-Length" не передается. хотя я его передавал в 23 строке. Что за глюк ? писал код основываясь на http://forum.vingrad.ru/forum/topic-291628/unread-1/hl/rutracker/index.html и http://kbyte.ru/ru/Programming/Articles.aspx?id=42&mode=art |