Cookiemanagement



  • Hallo,
    ich spiele gerade etwas mit der wininet rum.

    Ich versuche:
    - Login auf einer Website
    - Abfragen von Daten

    Ich habe jetzt folgendes gemacht.

    1. Nach dem Login

    CString url = "http://my.onvista.de";
    	char* curl= const_cast <char*> ((LPCSTR) url);
    	DWORD sz=0;
    	InternetGetCookie(curl,0,0,&sz);
    	if(sz)
    	{
    		char* buf=new char[sz];
    		InternetGetCookie(url,0,buf,&sz);
    		cookies.Format("%s",buf);
    		TRACE("\r\n\r\nCookie: %s",cookies);
    		delete buf;
    	}
    

    2. Beim Abrufen von Informationen:

    CStringArray	a1,a2;
    		CStringmanager	stringmanager;
    
    		InternetSetCookie(url,0,"");
    		stringmanager.split_string(cookies,a1,"; ");
    		for(int b1=0; b1<a1.GetSize(); b1++)
    		{
    			CString raw1 = a1[b1]; raw1.TrimRight();
    
    			a2.RemoveAll();
    			stringmanager.split_string(raw1,a2,"=");
    
    			CString name, data, final_data;
    			name = a2[0];
    
    				for(int b2=1;b2<a2.GetSize();b2++)
    				{
    					data+=a2[b2]+"=";
    				}
    
    			final_data = data.Mid(0,data.GetLength()-1);
    
    			TRACE("\r\nName: %s | Data: %s",name,final_data);
    			InternetSetCookie("http://index.onvista.de",name,final_data);
    		}
    

    (split_string zerlegt mir einen String anhand eines Trennzeichen und gibt die Teilstrings in einem CStringArray zurück)

    Soweit klappt das auch alles ABBBBERRR das Resultat sieht nicht so aus, wie es sollte:
    Cookie: MSID=9dc8faca4c35c11b011bc5f20dcdbabf; MYOUS=0; MSID=9dc8faca4c35c11b011bc5f20dcdbabf; MYOUS=1

    Sprich MSID und MYOUS sind doppelt drin. Ich kriege die einfach nicht weg und sie werden auch nicht von mir gesetzt.

    Wie werfe ich die beiden alsoo raus? Außerdem liefert mir der Server nach dem Login MYOUS=0, obwohl es =1 sein muss, wenn ich eingeloggt bin. Kann das daran liegen, dass mein WinInet Http/1.0 verwendet und der Server die Verbindung deshalb abbricht?

    Im Response-Header steht nämlich Connection: close, wenn ich mit dem Programm die Daten abrufe und Connection: keep-alive, wenn ich mit Firefox auf die Seite gehe.

    Vielen Dank für eure Hilfe!

    Michael



  • Könnt ihr mit der Frage nichts anfangen oder ist sie hier nur falsch?
    Wenn zweitens, dann bitte verschieben Mod.

    Grüße,
    Michael



  • Kann es sein, dass das was mit Session- und persistant-Cookies zu tun hat?
    Kommt schon, ich brauche eure Hilfe!

    Warum werden zwei Cookies mit dem gleichen Namen angezeigt? Wie kann ich einen davon löschen?

    Grüße,
    Michael



  • in der newsgroup microsoft.public.inetsdk.programming.wininet fragen



  • Danke für den Hinweis. Ich habe jetzt auch dort meine Frage gepostet aber vielleicht finde ich bei euch ja doch noch schneller eine Lösung. Bisher waren die User hier immer sehr hilfsbereit.

    Wie macht ihr das, wenn ihr über http/https an einen Server sendet bzw. von ihm empfangt? Nutzt ihr irgendeine Klasse, die das Cookiemanagement übernimmt oder benutzt ihr gar nicht wininet.

    Ich bin für jede Hilfe dankbar!

    Grüße,
    Michael


Anmelden zum Antworten