Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WebClient: как получить страницу с использованием cookie? / 25 сообщений из 36, страница 1 из 2
14.03.2008, 22:08
    #35192246
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Что надо сделать, чтобы скачать страницу с сайта с помощью например WebClient.DownloadString с использованием Cookie (Необходимо для автоавторизации)?
...
Рейтинг: 0 / 0
14.03.2008, 22:37
    #35192291
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Анатолий ИвановЧто надо сделать, чтобы скачать страницу с сайта с помощью например WebClient.DownloadString с использованием Cookie (Необходимо для автоавторизации)?

"автоавторизация" - звучит супер! Надо запомнить. :))

Cookie - это часть протокола HTTP, и искать их надо в Http...

Код: plaintext
1.
2.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://..."));
request.CookieContainer = new CookieContainer();
...
Рейтинг: 0 / 0
14.03.2008, 22:49
    #35192306
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Диез"автоавторизация" - звучит супер! Надо запомнить. :))

Да уж. Мне тоже понравилось :-)

Диез
Код: plaintext
1.
2.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://..."));
request.CookieContainer = new CookieContainer();

и?
Вот так я получу куки

Код: plaintext
1.
2.
3.
4.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Cookie cookie = response.Cookies[0];

Вот так я получаю страницу:

Код: plaintext
1.
2.
3.
WebClient client = new WebClient();
client.Headers.Add("UserAgent", "Mozilla/5.0 (Windows; U; Windows NT 5.1;) Firefox/2.0.0.7");
string str = client.DownloadString("http://vkontakte.ru/friend.php");

Ну и как связать одно с другим то? Я понимаю, что мало в этом понимаю, но в какую сторону двигаться - не понимаю. :-)
...
Рейтинг: 0 / 0
14.03.2008, 23:13
    #35192321
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Анатолий Иванов
Диез
Код: plaintext
1.
2.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://..."));
request.CookieContainer = new CookieContainer();

и?
Вот так я получу куки

Код: plaintext
1.
2.
3.
4.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Cookie cookie = response.Cookies[0];

Вот так я получаю страницу:

Код: plaintext
1.
2.
3.
WebClient client = new WebClient();
client.Headers.Add("UserAgent", "Mozilla/5.0 (Windows; U; Windows NT 5.1;) Firefox/2.0.0.7");
string str = client.DownloadString("http://vkontakte.ru/friend.php");

Ну и как связать одно с другим то? Я понимаю, что мало в этом понимаю, но в какую сторону двигаться - не понимаю. :-)

WebClient - это всего лишь высокоуровневая обертка над WebRequest. Если вам нужно более тонкое управление процессом, используйте только HttpWebRequest.

Код: plaintext
1.
2.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();

Внутри responseStream - то, что вам надо. Читайте его, например, с помощью StreamReader.

Код: plaintext
1.
2.
StreamReader rdr = new StreamReader(responseStream);
string result = rdr.ReadToEnd();

На память не помню, но где-то так...
...
Рейтинг: 0 / 0
14.03.2008, 23:16
    #35192323
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
А вот не так давно разбирались. Там всё рабочее.
...
Рейтинг: 0 / 0
14.03.2008, 23:29
    #35192332
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Да, на тот пост я уже наткнулся. Только теперь вопрос в том как попользовать те куки, что уже есть, чтобы зайти авторизованно на сервер, а так я получаю всего лишь страницу с вводом логина и пароля, т.к. не предъявил куков, ранее сохраненных браузером, например.
...
Рейтинг: 0 / 0
14.03.2008, 23:41
    #35192341
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Анатолий ИвановДа, на тот пост я уже наткнулся. Только теперь вопрос в том как попользовать те куки, что уже есть, чтобы зайти авторизованно на сервер, а так я получаю всего лишь страницу с вводом логина и пароля, т.к. не предъявил куков, ранее сохраненных браузером, например.

Ууу, это сложно. Даже у разных браузеров свои личные cookie-контейнеры, не говоря о всем обилии веб-клиентов.

Код: plaintext
1.
2.
%USER_HOME%/Cookies
%USER_HOME%/Application Data\Mozilla\Firefox\Profiles\?????????????\cookies.txt
%USER_HOME%/Application Data\Opera\Opera\profile\cookies4.dat

Если очень надо - пишите импортеры
...
Рейтинг: 0 / 0
14.03.2008, 23:53
    #35192351
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Неужели так не работает?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Cookie  cookieObj;
cookieObj = new Cookie(“user", “Ya”);
string query = ""http://...";
HTTPWebRequest = request = new (HTTPWebRequest )WebRequest.Create(query);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookieObj);
...
респонс
...
Рейтинг: 0 / 0
14.03.2008, 23:54
    #35192352
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
ДиезУуу, это сложно. Даже у разных браузеров свои личные cookie-контейнеры, не говоря о всем обилии веб-клиентов.

Код: plaintext
1.
2.
%USER_HOME%/Cookies
%USER_HOME%/Application Data\Mozilla\Firefox\Profiles\?????????????\cookies.txt
%USER_HOME%/Application Data\Opera\Opera\profile\cookies4.dat

Если очень надо - пишите импортеры
Вот так всегда, на самом интересном месте... (с) м/ф
...
Рейтинг: 0 / 0
15.03.2008, 00:04
    #35192362
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Анатолий, попробуйте как я написал чуть выше.
...
Рейтинг: 0 / 0
15.03.2008, 00:14
    #35192370
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
buredАнатолий, попробуйте как я написал чуть выше.
Попробовал - не помогло, либо я неправильно понял что выдирать из куки-файла (пока просто руками выдирал).
И еще: посмотрел, что кодировка приходящего текста windows-1251, попробовал перекодировать из нее в Unicode, но все равно всето русских букв получил "????"
...
Рейтинг: 0 / 0
15.03.2008, 00:15
    #35192372
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
да обязательно перекодировать. Посмотрите как делал Вагнер по ссылке.
...
Рейтинг: 0 / 0
15.03.2008, 00:21
    #35192378
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Encoding.ASCII.GetBytes();
...
Рейтинг: 0 / 0
15.03.2008, 00:24
    #35192382
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
buredда обязательно перекодировать. Посмотрите как делал Вагнер по ссылке.
C кодировкой получилось благодаря параметру у StreamReader, а вот с кукакми чего-то не то.
Ну например, насоздавал куков для vkontakte.ru (подсмотрел в файле куков, реальные значения заменены ;-) ):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            request.CookieContainer = new CookieContainer();
            Cookie c = new Cookie("remixemail", "test%40test.ru", "/", @".vkontakte.ru");
            Cookie d = new Cookie("remixpass", "d111111111111111", "/", @".vkontakte.ru");
            Cookie e = new Cookie("remixmid", "11111111", "/", @".vkontakte.ru");
            Cookie f = new Cookie("remixchk", "6", "/", @".vkontakte.ru");
            request.CookieContainer.Add(c);
            request.CookieContainer.Add(d);
            request.CookieContainer.Add(e);
            request.CookieContainer.Add(f);
И фиг там, опять показывает страницу логина.
...
Рейтинг: 0 / 0
15.03.2008, 00:28
    #35192384
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Отсылать нужно массив байт в смысле.
...
Рейтинг: 0 / 0
15.03.2008, 00:32
    #35192387
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
А ты get запрос используешь или post?
...
Рейтинг: 0 / 0
15.03.2008, 00:36
    #35192391
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Попробуй ещё так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Cookie  cookieObj;
CookieCollection cookieJar = new CookieCollection();

cookieObj = new Cookie(“user", “Joe”);
cookieJar.Add( cookieObj );

cookieObj = new Cookie(“item", “ISBN0123456789”);
cookieJar.Add( cookieObj )
request. CookieContainer = cookieJar ;
...
Рейтинг: 0 / 0
15.03.2008, 00:37
    #35192392
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
buredА ты get запрос используешь или post?
Явно не указываю, значит который по умолчанию.
...
Рейтинг: 0 / 0
15.03.2008, 00:52
    #35192400
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
HttpWebRequest.PreAuthenticate = true ?
...
Рейтинг: 0 / 0
15.03.2008, 00:57
    #35192403
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
buredHttpWebRequest.PreAuthenticate = true ?
Нет, но если даже включить, то все равно не работает
...
Рейтинг: 0 / 0
15.03.2008, 00:59
    #35192404
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Пожалуй ещё только на HttpWebRequest.TransferEncoding подозрение
...
Рейтинг: 0 / 0
15.03.2008, 01:09
    #35192408
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
buredПожалуй ещё только на HttpWebRequest.TransferEncoding подозрение
В смысле? Там null и SendChunked = false
...
Рейтинг: 0 / 0
15.03.2008, 01:18
    #35192414
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Так, чё-то меня тоже зацепило. Анатолий, подскажите как русские буквы вылечили?
...
Рейтинг: 0 / 0
15.03.2008, 01:22
    #35192418
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
buredТак, чё-то меня тоже зацепило. Анатолий, подскажите как русские буквы вылечили?
разобрался. Буду решать проблему кукисов.
...
Рейтинг: 0 / 0
15.03.2008, 01:41
    #35192429
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebClient: как получить страницу с использованием cookie?
Код: plaintext
request. CookieContainer = cookieJar ;
Вот здесь говорит, что не может привести CookieCollection к CookieContainer
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WebClient: как получить страницу с использованием cookie? / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]