Использование wininet
От: HighTower Россия http://pbudget.ru
Дата: 02.04.02 13:10
Оценка:
Народ, задача следующая — последовательно запостить данные сначала на http, а потом на https, при этом не должна теряться инфа (типа куков), которые были возаращены после первого поста на http...

Ипользовать пример с данного сайта
Автор(ы): Robert Coleridge
, то теряется инфа, т.к. делается:
сначала
CHTTPReader *rd = new CHTTPReader("mobile.icq.com", false);


а потом

rd->CloseConnection();
rd->OpenConnection("web.icq.com");


и всему хана
что посоветуете?
Бог у всех один — провайдеры разные...
Re: Использование wininet
От: IT Россия linq2db.com
Дата: 02.04.02 13:30
Оценка:
Здравствуйте HighTower, Вы писали:

HT>Народ, задача следующая — последовательно запостить данные сначала на http, а потом на https, при этом не должна теряться инфа (типа куков), которые были возаращены после первого поста на http...


Куки теряются даже если ты используешь, например, http://rsdn.ru и http://www.rsdn.ru, не говоря уже о протоколе. Для браузера (wininet'а) это разные сайты и он сам решает кому посылать куки, а кому нет.

Можно попробовать установить их явно, см. InternetGetCookie, InternetSetCookie.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Использование wininet
От: HighTower Россия http://pbudget.ru
Дата: 02.04.02 13:55
Оценка:
Здравствуйте IT, Вы писали:

IT>Можно попробовать установить их явно, см. InternetGetCookie, InternetSetCookie.


Странно, у меня не грузится search.microsoft.com,на который ссылка ссылается... если не трудно, киньте мне на эти странички...
Бог у всех один — провайдеры разные...
Re[3]: Использование wininet
От: IT Россия linq2db.com
Дата: 02.04.02 14:11
Оценка:
Здравствуйте HighTower, Вы писали:

IT>>Можно попробовать установить их явно, см. InternetGetCookie, InternetSetCookie.


HT>Странно, у меня не грузится search.microsoft.com,на который ссылка ссылается... если не трудно, киньте мне на эти странички...


И правда не грузится. Смотри в MSDN по индексу.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Использование wininet
От: HighTower Россия http://pbudget.ru
Дата: 02.04.02 14:23
Оценка:
Здравствуйте IT, Вы писали:

IT>И правда не грузится. Смотри в MSDN по индексу.

msdn.microsoft.com при поиске ссылается на search.microsoft.com со всеми вытекающими...


Я тут посмотрел, что хранится в куках в IE и решил написать следующее:

CHTTPReader *rd = new CHTTPReader("web.icq.com", true);
rd->SetDataBuffer(1024*50);

// Типа пытаюсь куки поставить...
InternetSetCookie("web.icq.com", "sms_country", "7");
InternetSetCookie("web.icq.com", "KarmaLogin", "8671B724154E16A956FD2125AD3BD49EE5CFC88683A268CC6B3EF68126BF4FBA4ED03D0576B3E24A17D53386B3A019C1AAFBAE9DB4C3F75E");
InternetSetCookie("web.icq.com", "KarmaService1", "KarmaService1");


rd->Post("secure/sms/send_history/1,,,00.html",
         "country=7&carrier=812&tophone=1234567&y=15&prefix=%2B7&uSend=1&charcount=154&msg=MyTest",
         "about:blank");

ofstream fnew("temp.html",ios::out|ios::binary);
if (fnew.is_open()) {
fnew << rd->GetData().c_str();
fnew.close();
}

delete rd; rd = NULL;


Результат отрицательный...
получаю
<!-- Vignette StoryServer 5.0 Tue Apr 02 10:18:52 2002 -->
<!-- 1 -->

    <!-- x -->


аналогичное получаю, если просто в строке IE написать https://web.icq.com/secure/sms/send_history/1,,,00.html?country=7&amp;carrier=812&amp;tophone=1234567&amp;y=15&amp;prefix=%2B7&amp;uSend=1&amp;charcount=154&amp;msg=MyTest
Бог у всех один — провайдеры разные...
Re[5]: Использование wininet
От: IT Россия linq2db.com
Дата: 02.04.02 15:13
Оценка:
Здравствуйте HighTower, Вы писали:

HT>
HT>InternetSetCookie("web.icq.com", "sms_country", "7");

Попробуй

InternetSetCookie("https://web.icq.com", "sms_country", "7");


И лучеше кукесы сначала прочитать через InternetGetCookie.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Использование wininet
От: Аноним  
Дата: 03.04.02 11:22
Оценка:
Здравствуйте IT, Вы писали:

IT>Попробуй


IT>InternetSetCookie("https://web.icq.com", "sms_country", "7");


Не помогло... :(

IT>И лучеше кукесы сначала прочитать через InternetGetCookie.


Я самую малость не понимаю, для какой сессии (или чего) ставятся и читаются куки?
Да и хотелось бы всё-таки почитать доки про InternetSetCookie и InternetGetCookie... может я неправильно параметры передаю или ещё что...
Re[7]: Использование wininet
От: HighTower Россия http://pbudget.ru
Дата: 05.04.02 10:28
Оценка:
Если интересно, то проблема решилась вот так:

HINTERNET hInternetSession;   
HINTERNET hURL;
char cBuffer[1024*10];
BOOL bResult;
DWORD dwBytesRead;


// Make internet connection.
hInternetSession = InternetOpen(
                  "Microsoft Internet Explorer", // agent
                  INTERNET_OPEN_TYPE_PRECONFIG,  // access
                  NULL, NULL, 0);                // defaults

// Make connection to desired page.
hURL = InternetOpenUrl(
         hInternetSession,                       // session handle
         "http://mobile.icq.com/karma/dologin/1,,,00.html?uService=1&uLogin=UIN&uPassword=PASS",  // URL to access
         NULL, 0, 0, 0);                         // defaults


hURL = InternetOpenUrl(
         hInternetSession,                       // session handle
         "https://web.icq.com/secure/sms/send_history/1,,,00.html?country=7&carrier=812&tophone=1234567&y=15&prefix=%2B7&uSend=1&charcount=154&msg=MyTest",  // URL to access
         NULL, 0, 0, 0);                         // defaults

// Read page into memory buffer.
bResult = InternetReadFile(
            hURL,              // handle to URL
            (LPSTR)cBuffer,    // pointer to buffer
            (DWORD)1024*10,       // size of buffer
            &dwBytesRead); // pointer to var to hold return value

// Result analising

// Close down connections.
InternetCloseHandle(hURL);
InternetCloseHandle(hInternetSession);


Однако это если брать страницы методом GET (благо асин сайт это позволяет), а как быть, если надо сделать POST? (чтоб так же красиво выгявдело)
Бог у всех один — провайдеры разные...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.