WinHTTP: Wie prüfe ich, ob ein Cookie (nach einem Request) gesetzt wurde?
-
Hi,
ich glaube, der Titel sagt schon alles. Ich sende ein GET-Request an den Server und möchte wissen, ob ein ganz bestimmter Keks gesetzt wurde oder nicht.
Danke im Voraus für jede hilfreiche Antwort!

-
Wenn Du das von Hand machst:
WER soll denn da was SETZEN? Der Cookie kommt im Header der Antwort zurück... lese ihn da einfach aus und speichere ihn selber... bzw. schicke ihn bei der nächsten Anfrage wirder mit...
-
Ehm... der HTTPd?
Die Frage war ja gerade, wie ich den Antwort-Header mit WinHTTP auslesen kann...

-
Du könntest auch schreiben, WIE Du es bisher machst...
Siehe: HttpQueryInfo
http://msdn.microsoft.com/en-us/library/aa384238
mit
HTTP_QUERY_COOKIE
-
Jochen Kalmbach schrieb:
Du könntest auch schreiben, WIE Du es bisher machst...
Siehe: HttpQueryInfo
http://msdn.microsoft.com/en-us/library/aa384238
mit
HTTP_QUERY_COOKIE

-
Ah, habe jetzt eine Funktion gefunden, die sich ganz ähnlich verhält wie HttpQueryInfo! WinHttpQueryHeaders
Danke

-
Ich habe es nun so gemacht...
std::wstring Kekse(HINTERNET &hRequest) { DWORD dwSize; wchar_t *pwszBuffer; std::wstringstream wssCookies; for(DWORD dwIndexNow = 0, dwIndexNext = 0; dwIndexNow == dwIndexNext; dwIndexNow++) { if(!WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_SET_COOKIE, WINHTTP_HEADER_NAME_BY_INDEX, NULL, &dwSize, &dwIndexNext)) { if(GetLastError() == ERROR_INSUFFICIENT_BUFFER) { if(pwszBuffer = new wchar_t[dwSize / sizeof(wchar_t) + 1]) { if(WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_SET_COOKIE, WINHTTP_HEADER_NAME_BY_INDEX, static_cast<LPVOID> (pwszBuffer), &dwSize, &dwIndexNext)) { wssCookies << pwszBuffer << "\r\n"; } delete pwszBuffer; } } } } return wssCookies.str(); }Ist das so alles okay, oder kann da etwas zu einem Problem werden?
