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!


Anmelden zum Antworten