Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как после POST продолжить работу с сессией 
:(
    Опции темы
uranpro
Дата 19.7.2010, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



Добрый вечер.
есть задача:
1. авторизоваться на сайте kinozal.tv
2. продолжить работу как пользователь

делаю POST, и авторизуюсь.
Как продолжить работу в этой сессии?
POST
Код

            var uid = "login";
            var pass = "password";
            var url = "http://kinozal.tv/takelogin.php";

            var msg = new StringBuilder(String.Empty);
            var reqString = String.Format("username={0}&password={1}", uid, pass);
            var requestData = Encoding.UTF8.GetBytes(reqString);
            var cc = new CookieContainer();

            var request = (HttpWebRequest)WebRequest.Create(url);
            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);
            }



--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
KelTron
Дата 20.7.2010, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



При следующем запросе используй тот же CookieContainer


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
uranpro
Дата 20.7.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



не выходит =(

Добавлено через 3 минуты и 5 секунд
в итоге сделал так
Код

            var uid = "username";
            var pass = "password";
            var url = String.Format("http://kinozal.tv/takelogin.php?username={0}&password={1}", uid, pass);
            var homeUrl = "http://kinozal.tv";

            var cc = new CookieContainer();

            var request = (HttpWebRequest)WebRequest.Create(url);
            request.KeepAlive = true;
            request.CookieContainer = cc;

            request.GetResponse();

            OnResult("Coockie count: " + cc.Count);

            request = (HttpWebRequest)WebRequest.Create(homeUrl);
            request.CookieContainer = cc;

            var webResponse = request.GetResponse();

но проблема осталась, не знаю что делать


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
KelTron
Дата 20.7.2010, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



Проверь правильно ли ты формируешь данные для POSTа, все ли нужные заголовки указаны. Для этого есть удобная утилита для FireFox - Live HTTP Headers
То что в твоём втором посте ясно дело не будет работать, т.к. при аутентификации используется POST, а не GET.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
uranpro
Дата 20.7.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



2ой пост работает, точнее пишет куки в отличии от первого, поставил свойство AllowRedirect в True, теперь меня перебрасывает на страницу входа.
сейчас посмотрю LiveHeaders


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
uranpro
Дата 20.7.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



не получается, код
Код

            var uid = "user";
            var pass = "pas";
            var loginUrl = "http://kinozal.tv/takelogin.php";
            var homeUrl = "http://kinozal.tv/";
            var contentPath = Environment.CurrentDirectory + "\\postResponse.xml";

            var msg = new StringBuilder(String.Empty);
            var reqString = String.Format("username={0}&password={1}&returnto=", uid, pass);
            var requestData = win1251.GetBytes(reqString);
            var cc = new CookieContainer();
            
            var request = (HttpWebRequest)WebRequest.Create(loginUrl);
            request.AllowAutoRedirect = true;
            request.CookieContainer = cc;

            request.Method = "POST";

            request.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6";
            request.Accept = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Headers.Add(@"Accept-Language: ru,en-us;q=0.7,en;q=0.3");
            request.Headers.Add(@"Accept-Encoding: gzip,deflate");
            request.Headers.Add(@"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7");
            request.Headers.Add(@"Keep-Alive: 115");
            request.Referer = @"http://kinozal.tv/";
            request.ContentType = @"application/x-www-form-urlencoded";
            request.ContentLength = requestData.Length;
            request.KeepAlive = true;

            using (var s = request.GetRequestStream())
                s.Write(requestData, 0, requestData.Length);

            var webResponse = request.GetResponse();

Формат лога: Запрос\r\nОтвет
Лог POST Firefox
Код

POST /takelogin.php HTTP/1.1
Host: kinozal.tv
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://kinozal.tv/
Cookie: countrys=ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 44

username=***&password=***&returnto=
HTTP/1.1 302 Found
Server: nginx/0.7.67
Date: Tue, 20 Jul 2010 09:59:21 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.12
Set-Cookie: uid=***; expires=Tue, 19-Jan-2038 03:14:07 GMT; path=/; domain=.kinozal.tv; httponly
Set-Cookie: pass=***; expires=Tue, 19-Jan-2038 03:14:07 GMT; path=/; domain=.kinozal.tv; httponly
Location: http://kinozal.tv/my.php

Лог POST моей проги
Код

POST /takelogin.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Referer: http://kinozal.tv/
Content-Type: application/x-www-form-urlencoded
Host: kinozal.tv
Content-Length: 44
Expect: 100-continue
Connection: Keep-Alive


HTTP/1.1 100 Continue

такое чувство, что данные не пишутся в поток RequestStream.

помогите разобраться, оч интересно))

Это сообщение отредактировал(а) uranpro - 20.7.2010, 13:26


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
uranpro
Дата 20.7.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



короче нифина не работает этот кусок кода
Код

            using (var requestStream = request.GetRequestStream())
                requestStream.Write(requestData, 0, requestData.Length);

т.е. контент(параметры) не передается.

разными прогами смотрел, в контенте пустота!
пробовал эту же инфу передавать через утилиту HttpDebuggerPro и все нормально работает!

это баг что ли?))) или я что-то не так делаю, что никто не знает ? попробуйте у себя ПЛС!!!

VS2010 Ultimate v 10.0.30319.1 RTMRel =)))

Это сообщение отредактировал(а) uranpro - 20.7.2010, 15:53


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Fortnox
Дата 20.7.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Все передается. После авторизации вас согласно строке:
Код

request.AllowAutoRedirect = true;

"перебрасывает на главную страницу", а в кукисах находятся ваши данные. И их и надо использовать для всех последующих запросов.

Ежели хотите увидеть ответ сервера после авторизации только - запретите автоперенаправление:
Код

request.AllowAutoRedirect = false;

PM MAIL   Вверх
uranpro
Дата 20.7.2010, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



т.е. после переброски, на гл странице ты уже как пользователь? это точно? т.к. у меня тоже происходит редмрект, но я остаюсь гостем.


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.