CInternetSession + Cookies
-
Hallo,
die Klasse CInternetsession ist mir etwas zu fleißig. Ich will nicht, dass sie das Cookie-Management allein übernimmt. Ich möchte nur bestimmte Cookies senden.Ich habe jetzt den Parameter "INTERNET_FLAG_NO_COOKIES" gefunden, mit dem ich Cookies deaktivieren kann. Das hat aber den Nachteil, dass auch die von mir manuell hinzugefügten Cookies nicht gesendet werden.
Wie kann ich das automatische Cookie-Management deaktivieren und trotzdem eigene Cookies senden?
Danke,
Michael
-
Habe jetzt gesehen, dass ich mit ::InternetSetCookie Cookies setzten kann. Nur wie kann ich Cookies löschen?
Grüße,
Michael
-
Ich hoffe wirklich, dass mir bald jemand hilft!
Hier mein bisheriger Code:
bool CCommunicator::getURL(CString url, CString &quellcode, CStringArray &sourcecodeArray) { bool return_value = true; CString somecode; CInternetSession session("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6",1,INTERNET_OPEN_TYPE_PRECONFIG); session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 30000); session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 10); CString strUrl(url); CStdioFile* pFile = NULL; try { // Das hier funktioniert noch nicht // ::HttpAddRequestHeaders( session, "", strlen(""), HTTP_ADDREQ_FLAG_REPLACE); ::InternetSetCookie(url,"meinCookie","seineDaten"); // pFile = session.OpenURL(url,1,INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_NO_COOKIES,NULL); pFile = session.OpenURL(url,1,INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_TRANSFER_BINARY,NULL); if(pFile) { while (pFile->ReadString(somecode) != NULL) { // String quellcode += somecode + "\r\n"; // StringArray sourcecodeArray.Add(somecode); } pFile->Close(); delete pFile; } } catch (CInternetException* e) { TCHAR szCause[255]; e->GetErrorMessage(szCause, 255); e->Delete(); quellcode = ""; sourcecodeArray.RemoveAll(); return_value = false; } session.Close(); CloseHandle(session); // 1. Ausnahmefehler if(quellcode.Find("The requested URL could not be retrieved")!=-1) return_value = false; // 2. Ausnahmefehler if(quellcode.Find("Service Unavailable")!=-1) return_value = false; return return_value; }
-
Kommt schon Leute. Lasst mich nicht hängen!
Ich habe für Win HTTP ::HttpAddRequestHeaders gefunden aber das klappt nicht bei meine Funktion (siehe oben).
Bitte helft mir!
-
ich würde libcurl verwenden :p
-
Hallo "kein hilfe",
das war genau die richtige Hilfe
Mit cURL konnte ich absolut alle Aufgaben erledigen, die mir bisher mit CInternetSession kopfzerbrechen bereitet haben.
Vielen DANK!