Seite mit Cookies aufrufen ?!

Neral

Mitglied
HuHu alle,

Ich habe ein kleines Verstaendnisproblem. Undzwar, wenn mir die Ebayseite die Angebote fuer die Monitore auflistet ist das so angeordnet:

  • Bild -> Beschreibung -> Preis -> Gebote -> Zeit

Nachdem ich in den Anzeige Optionen dies umgestellt habe wird folgendes angezeigt:

  • Artikelnummer -> Beschreibung -> Preis -> Gebote -> Ablaufdatum

Und dies wird ja in einem(3) Cookie(s) abgespeichert.
Dies sieht so aus:

cookie.jpg


Im .Net Framework gibt es ja die Klassen HttpCookieCollection und HttpCookie.
Wenn ich nun eine Internetseite habe "www.ebay.de" und die in einem Objekt gespeichert habe wie kann ich dann dem Objekt sagen: verwende diese einstellungen/werten von den drei Cookies


gruss neral
 
Also ,ich habe den CookieContainer hinzugefuegt wie auf der ms Seite

Hier erstmal der Link zu msdn:
http://msdn.microsoft.com/library/d...etHttpWebRequestClassCookieContainerTopic.asp

so habe ich das ja auch gemacht, nur nimmt der die Cookie-Eigenschaften nicht an also er zeigt den Quellcode normal an!

,denn wenn die Cookies erkannt worden waeren, wuerde sowas im Quellcode stehen:
.
.
.dSI(1,1,1,1,0,77,9,0,0,1,0,0,0,1,0,5114488785,"Marken Monitor 17&quot; aus Lagerüberbestä<wbr>nden 1JG","vom Fachhändler mit einem Jahr Gewährleistung","/ws/eBayISAPI.dll?ViewItem&category=19550&item=5114488785&rd=1",'','<font size="-1" color="#666666">EUR</font> 49,00','','',0,"05. Sep.","21:30",{},"0,0,0,0,0,0,0,0,0,0,0,0",{},"0",{shipType:"-1"},0);
.
.
.
und davon 50-200 Stueck :\ nur steht da nichts von.

Liegt das vieleicht an einer Einstellung von mir ?!
Im IE bekomme ich die Seite ja mit Cookie gelesen(wird alles wie gewollt angezeigt)
nur beim versuch sie auszulesen nicht wirklich.. :\

her die Methode zum auslesen:

PHP:
public string auslesen()
		{
			string htmlcode = null;
			//Uri url = new Uri(TextBox1.Text);
            
			//Creates an HttpWebRequest with the specified URL.     
			HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://computer.listings.ebay.de/Monitore-TFT-Displays_Monitore_W0QQfromZR4QQsacategoryZ19549QQsocmdZListingItemListQQsocustoverrideZ1"); 
			
			//CookieContainer erstellen zur uebergabe der Cookieattribute
			myHttpWebRequest.CookieContainer = new CookieContainer();
			
			// Sends the HttpWebRequest and waits for the response.             
			HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
            
			myHttpWebResponse.Cookies = myHttpWebRequest.CookieContainer.GetCookies(myHttpWebRequest.RequestUri);
			
			// Gets the stream associated with the response. 
			Stream receiveStream = myHttpWebResponse.GetResponseStream(); 
            
			Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
            
			// Pipes the stream to a higher level stream reader with the required encoding format. 
			StreamReader readStream = new StreamReader( receiveStream, encode ); 
            
			Char[] read = new Char[256]; 
            
			// Reads 256 characters at a time.     
			int count = readStream.Read( read, 0, 256 );
			while (count > 0) 
			{ 
				// Dumps the 256 characters on a string and displays the string to the console. 
				String str = new String(read, 0, count); 
				htmlcode = htmlcode + str;
				count = readStream.Read(read, 0, 256); 
			} 
			            
			// Releases the resources of the response. 
			myHttpWebResponse.Close(); 
            
			// Releases the resources of the Stream. 
			readStream.Close(); 
			return htmlcode;
        
		}

Ich habe mir mal meine ganzen Cookie-Einstellungen in der Konsole ausgeben lassen, vieleicht hilft es ja weiter... mir sagt das nicht besonders viel.

cookiejpg.jpg


gruss neral
 
Hallo Neral.

Du setzt immer eine neue CookieContainer Instanz, also gehen deine Cookies immer wieder verloren! Mach dir eine Instanz, rufe mit der die Einstellungsseite auf damit diese (die Einstellungen) gesetzt sind, speichere sie ab, und benutze sie immer wieder.


Die Einstellungsseite von eBay aufrufen, und Post-Daten des Formulars übertragen.
Dadurch werden die Einstellungen im CookieContainer gespeichert.
Restliche Code in einer wunderschönen WindowsForms Applikation ist angehängt.
PHP:
private void SetEbayOptions()
{
    // Siehe GetPage();
    CheckCookieOptions(false);

    try
    {
        HttpWebRequest hwr = (HttpWebRequest) WebRequest.Create(EbaySettingsUrl);
        hwr.CookieContainer = cookieContainer;

        hwr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";

        StreamReader datareader = new StreamReader(File.OpenRead("pd.txt"),System.Text.Encoding.UTF8);
        string postData = "";

        // Einstellungen für eBay aus Datei laden
        while (datareader.Peek() != -1)
        {
            string line = datareader.ReadLine();
            string[] vals = line.Split(',');
            if (vals[1].Equals("EbayUrl"))
                vals[1] = this.EbayUrl;
            postData += vals[0] + "=" + vals[1] + "&";
        }
        datareader.Close();

        AddLog("PostData: " + postData);

        byte[] bpostData = System.Text.Encoding.UTF8.GetBytes(postData);

        // Einstellung für Post-Daten
        hwr.Method = "POST";
        hwr.ContentType="application/x-www-form-urlencoded";
        hwr.ContentLength = bpostData.Length;

        // Post Daten schreiben..
        Stream writer = hwr.GetRequestStream();
        writer.Write(bpostData,0,bpostData.Length);
        writer.Close();

        HttpWebResponse resp = (HttpWebResponse) hwr.GetResponse();
        AddLog("StatusCode: " + resp.StatusCode);

        StreamReader reader = new StreamReader(resp.GetResponseStream(),System.Text.Encoding.UTF8);
        rtbSource.Text = reader.ReadToEnd();
        reader.Close();
        resp.Close();

        string log = "Cookies: " + resp.Cookies.Count + "\r\n";
        foreach (Cookie c in resp.Cookies)
        {
            if (CookieUris.ContainsKey(c.Domain))
                CookieUris[c.Domain] = (int)CookieUris[c.Domain] + 1;
            else
                CookieUris.Add(c.Domain,1);

            log = log + "\r\n" + c.Name +", " + c.Domain;
        }
        AddLog(log);

        RefreshCookieView();
    }
    catch (Exception ex)
    {
        AddLog("Error\r\n" + ex.Message);
        MessageBox.Show(ex.Message + "\r\n\r\n" + ex.StackTrace,"Fehler..");
    }

}

MfG,
Alex
 

Anhänge

  • neralstuff.zip
    47,4 KB · Aufrufe: 43
urg Das ist ja rattenscharf :D
Ich glaube, da hab ich fuer heute nacht und morgen erstmal was zum durcharbeiten :D

Thx sieht echt wunderschoen aus

Nur so nebenbei: Geh mal auf die Ebayseite zB unter Monitore und lass Dir den Quelltext anzeigen und such nach "dSI", dann findet man da soeine kleine Auflistung.
Aber wenn wir das nun mit Deinem wunderschoenen Programm machen oder mit meinen, also den Quelltext rausholen und dort nach "dSI" suchen wird nichts gefunden o_O

warum nicht ?


Gruss Neral
 
Weil eBay dich nicht mag. ;)




Nein, keine Ahnung. Spiel dich mit den Einstellungen für eBay. Ist in der pd.txt zu finden. (Achtung, es gibt 2. Eine im Projektordner, und eine bei der Assembly im Debug Ordner. Die bei der Assembly musst ändern. ;) )
 
Hehe jo DAS glaube ich langsam auch ;)

Jo werd ich auch machen. Bin gerade irgendwie voll im .NET Tick ;) :D

hihi THX nochmal
 
Viel Spass.

Wegen dem vorkommen dieser Zeichenketten,.. auch wenn sie nicht vorkommen, die Seite ist ansich richtig, wenn du den HTML Code aus dem Source-Tab in eine Textdatei kopierst, als *.html speicherst, und dann mit einem Browser öffnest, siehst du das gewünschte Layout.
 

Anhänge

  • cookies.jpg
    cookies.jpg
    29,5 KB · Aufrufe: 82
Danke werde ich haben :D :p

Hm... ja stimmt. Woran kann das aber liegen ?! Hm.. komisch naja gehe mal was essen :) *g*
 
Zurück