Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.23.103.111] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Взял пример для работы отсюда Вопрос в следующем: мне необходимо передать куки при запросе страницы. В ИЕ куки есть, захожу на требуемый сайт без ввода логина и пароля. Пробовал посмотреть куки с помощью InternetGetCookie как описано здесь, но lpszData всегда равно NULL. Подскажите, плиз, как передать куки при отправке запроса? Заранее всем благодарен! |
Сообщ.
#2
,
|
|
|
Даже простой пример не дает желаемых результатов
Проходит без ошибок, но lpszData указывает на NULL В чем проблема? Чего не хватает? if (!InternetSetCookie(_T("http://MyTestCookieSite"), _T("MyTestCookieName"), _T("MyTestCookieValue"))) { Error = GetLastError(); } else { again: if (!InternetGetCookie(_T("http://MyTestCookieSite"), NULL, lpszData, &dwSize)) { Error = GetLastError(); if (Error == ERROR_INSUFFICIENT_BUFFER) { lpszData = new TCHAR[dwSize]; goto again; } else { } } else { delete[]lpszData; } } Добавлено Частично разобрался не стоило доверять примерам, а стоило читать доки! Так работает: if (!InternetSetCookie(_T("http://MyTestCookieSite.com"), _T("MyTestCookieName"), _T("MyTestCookieValue"))) { Error = GetLastError(); } else { again: if (!InternetGetCookie(_T("http://MyTestCookieSite.com"), NULL, lpszData, &dwSize)) { Error = GetLastError(); if (Error == ERROR_INSUFFICIENT_BUFFER) { lpszData = new TCHAR[dwSize]; goto again; } else { } } else { if (lpszData == NULL && dwSize > 0) { lpszData = new TCHAR[70]; goto again; } delete[]lpszData; } } |
Сообщ.
#3
,
|
|
|
После некоторых разборов осталось два вопроса:
1. IE (версии 8) залогинен. Захожу им на ресурс, смотрю в фидлере: отправляются все куки. Отправляю запрос вышеуказанным примером: отправляются не все куки. Смотрел в папке Windows\Cookies - там тоже не все куки. Где IE хранит остальные куки? 2. При отправке запроса вышеуказанным примером подставляется и сачть куков, которая лежит в Windows\Cookies. Как добиться того, чтоб отправлялись только те куки, которые я указываю, а куки из Windows\Cookies не отправлялись? |
Сообщ.
#4
,
|
|
|
Цитата -=CAP=- @ 2. При отправке запроса вышеуказанным примером подставляется и сачть куков, которая лежит в Windows\Cookies. Как добиться того, чтоб отправлялись только те куки, которые я указываю, а куки из Windows\Cookies не отправлялись? Так с этим разобрался: 1. В параметр dwFlags функции HttpOpenRequest добавляем INTERNET_FLAG_NO_COOKIES. 2. Прописывем требуемые куки непосредственно в хедере (поля lpcszHeader и dwHeadersLength структуры INTERNET_BUFFERS, передаваемой параметром lpBuffersIn метода HttpSendRequestEx). |