Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2015, 16:19   #1
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
Печаль Как узнать, авторизовался или нет

Код:
            CookieCollection cookies = new CookieCollection();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.ru");
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(cookies);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            cookies = response.Cookies;

         
            string postData = String.Format("auth_key={0}&email={1}&pass={2}", "880ea6a14ea49e853634fbdc5015a024", "site", "123");
            HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create("http://www.site.ru/index.php?app=core&module=global&section=login&do=process");
            getRequest.CookieContainer = new CookieContainer();
            getRequest.CookieContainer.Add(cookies); //recover cookies First request
            getRequest.Method = WebRequestMethods.Http.Post;
            getRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.10034 Safari/537.36";
            getRequest.AllowWriteStreamBuffering = true;
            getRequest.ProtocolVersion = HttpVersion.Version11;
            getRequest.AllowAutoRedirect = true;
            getRequest.ContentType = "application/x-www-form-urlencoded";

            byte[] byteArray = Encoding.ASCII.GetBytes(postData);
            getRequest.ContentLength = byteArray.Length;
            Stream newStream = getRequest.GetRequestStream(); //open connection
            newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
            newStream.Close();

            HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                string sourceCode = sr.ReadToEnd();
            }
Как узнать, мол удалось авторизоваться или нет...??
Predator199 вне форума Ответить с цитированием
Старый 16.02.2015, 16:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дык наверное распарсить то что пришло в sourceCode.
Врядли тебе сервер будет кидать ошибку HTTP, он скорее всего напишет в виде красочной странички слова "Да идите, вы, сударь далеко и надолго", причем не которые сайты делают это в виде картинки, чтоб парсить не удалось.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2015, 17:30   #3
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Что вы пишите, я ни одного слова не понял...

sourceCode , содержит html страницы. Но, как вам так сказать. Скрипт на ней не авторизован, то есть. Присутствует кнопка "Войти", "Зарегистрироваться".

Я не понимаю, в чем ошибка?

С куками еще понять не могу
Код:
            CookieCollection cookies = new CookieCollection();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.ru");
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(cookies);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            cookies = response.Cookies;
Для чего дважды делаем запрос, для чего это?

Последний раз редактировалось Predator199; 16.02.2015 в 17:33.
Predator199 вне форума Ответить с цитированием
Старый 16.02.2015, 17:33   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну вот и узнали — не авторизовался.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.02.2015, 17:36   #5
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

В чем ошибка, где ошибка в коде. Посты верные и адрес тоже, на php через curl все ок. Тут ничего не получается...
Predator199 вне форума Ответить с цитированием
Старый 16.02.2015, 17:40   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Берите что-нибудь типа Fiddler и сравнивайте запросы.

Возможная причина — вы зачем-то создаете новый CookieContainer на каждый запрос.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.02.2015, 17:41   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я ни одного слова не понял...
Тогда не буду мешать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2015, 17:43   #8
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда не буду мешать.
Что мне делать, вешатьс или быть может застрелиться. Второй день одни тролинг вместо помощи...

Код:
        CookieCollection cookies = new CookieCollection();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.ru");
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(cookies);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            cookies = response.Cookies;
Для чего этот код,чтобы куки узнать какие и потом в следущий запрос добавить?

Последний раз редактировалось Stilet; 16.02.2015 в 18:56.
Predator199 вне форума Ответить с цитированием
Старый 16.02.2015, 17:46   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да где вы троллинг видите? Либо изучайте нормально, либо платите кому-то, чтоб за вас сделали.

В ответах выше нет ничего сложного и непонятного.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.02.2015, 17:49   #10
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Да где вы троллинг видите? Либо изучайте нормально, либо платите кому-то, чтоб за вас сделали.

В ответах выше нет ничего сложного и непонятного.
Да где вы тут видите ответы, помощь. Я вижуодин спан, да хоть на один ответ укажи, который быть грам бы помогГГ

Для чего это код в коде выше..
Код:
            CookieCollection cookies = new CookieCollection();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.ru");
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(cookies);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            cookies = response.Cookies;
Для чего дважды одно и тоже прописанно?

В этом коде есть ошибки

Код:
            string postData = String.Format("auth_key={0}&email={1}&pass={2}", "880ea6a14ea49e853634fbdc5015a024", "name", "123");
            HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create("http://www.site.ru/index.php?app=core&module=global&section=login&do=process");
            getRequest.CookieContainer = new CookieContainer();
            getRequest.Method = WebRequestMethods.Http.Post;
            getRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.10034 Safari/537.36";
            getRequest.AllowWriteStreamBuffering = true;
            getRequest.ProtocolVersion = HttpVersion.Version11;
            getRequest.AllowAutoRedirect = true;
            getRequest.ContentType = "application/x-www-form-urlencoded";

            byte[] byteArray = Encoding.ASCII.GetBytes(postData);
            getRequest.ContentLength = byteArray.Length;
            Stream newStream = getRequest.GetRequestStream(); //open connection
            newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
            newStream.Close();

            HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                string sourceCode = sr.ReadToEnd();
            }
Отправляется ли пост запрос. ПОст данные верны и адрес тоже, в коде все правильно прописано?

Последний раз редактировалось Stilet; 16.02.2015 в 18:59.
Predator199 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, создалась форма или нет? FataLL C++ Builder 30 27.09.2013 09:54
как понять авторизовался я или нет? megostudent Работа с сетью в Delphi 4 15.02.2012 23:32
как узнать пересекаются 2 окружности или нет fate Общие вопросы Delphi 2 17.06.2011 15:27
как узнать занят порт или нет DeDoK Работа с сетью в Delphi 3 12.09.2010 21:51
Как узнать программа запущена или нет? ilSMoKEli Общие вопросы Delphi 5 02.05.2010 23:01