Приветствую всех! Уважаемые коллеги, помогите пожалуйста вот в таком вопросе: Я реализую приложение, которое организует авторизацию на сайте с отображение куков, и выводит код html авторизированной страницы в textBox. Вот код: Code: StringBuilder msg = new StringBuilder(String.Empty); Uri st = new Uri("http://www.deviantart.com"); string reqString = String.Format("username={0}&password={1}", username, password); byte[] requestData = Encoding.UTF8.GetBytes(reqString); CookieContainer cc = new CookieContainer(); var request = (HttpWebRequest)WebRequest.Create(thURI); request.Proxy = null; request.AllowAutoRedirect = false; request.CookieContainer = cc; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; using (System.IO.Stream s = request.GetRequestStream()) s.Write(requestData, 0, requestData.Length); using (var response = (HttpWebResponse)request.GetResponse()) { foreach (var str in cc.GetCookies(st)) { msg.Append(str); } textBox1.AppendText(msg.ToString()); } WebRequest req = WebRequest.Create("http://www.deviantart.com/?loggedin=1"); req.Credentials = CredentialCache.DefaultCredentials; HttpWebResponse respons = (HttpWebResponse)req.GetResponse(); Stream dataStream = respons.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); textBox3.AppendText(responseFromServer); reader.Close(); dataStream.Close(); respons.Close(); Приложение работает, но не корректно. Если быть точнее авторизация проходит, и выдается html страница, НО не авторизированная. Как можно исправить данную проблему, исходя и моего кода? Возможно использовать полученную сессию куков, и запихнуть их на отображение html страницы? Но вот как это сделать... HELP Please.
Ну так к запросу на http://www.deviantart.com/?loggedin=1 надо куки добавить, полученные при авторизации, а ты этого не делаешь.
Итак, выход найден. Итог выглядит так: Code: string username = "vasya"; string password = "12345"; var msg = new StringBuilder(String.Empty); var st = new Uri("http://www.deviantart.com"); var reqString = String.Format( "reusetoken=1&username={0}&password={1}", username, password); var requestData = Encoding.UTF8.GetBytes(reqString); var cc = new CookieContainer(); var request = (HttpWebRequest) WebRequest.Create( "https://www.deviantart.com/users/login"); [B][COLOR=LemonChiffon]1[/COLOR][/B] request.Credentials = CredentialCache.DefaultCredentials; request.AllowAutoRedirect = false; request.KeepAlive = true; request.CookieContainer = cc; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"; request.ContentLength = requestData.Length; using (var s = request.GetRequestStream()) { s.Write(requestData, 0, requestData.Length); } var webResponse = request.GetResponse(); using (var stream = new StreamReader(webResponse.GetResponseStream())) { var content = stream.ReadToEnd(); textBox3.AppendText(content); foreach (var str in cc.GetCookies(st)) { msg.Append(str); } textBox1.AppendText(msg.ToString()); } HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://www.deviantart.com/?loggedin=1"); req.CookieContainer = cc; [COLOR=LemonChiffon][B]2[/B][/COLOR] req.Credentials = CredentialCache.DefaultCredentials; HttpWebResponse respons = (HttpWebResponse)req.GetResponse(); Stream dataStream = respons.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); textBox2.AppendText(responseFromServer); reader.Close(); dataStream.Close(); respons.Close(); При логине используется протокол https вместо http 1. И при втором обращении к сайту нужно использовать CookieContainer от первого обращения 2.