C# CookieContainer übergeben?

EvilDragonCD

Grünschnabel
Moin moin,
Mit diesem Code:
Code:
private void button4_Click(object sender, EventArgs e)
        {
            // cookieContainer is used to store the cookies used by the login
            CookieContainer cookieContainer = new CookieContainer();
            string html;
            string loginData = "ownnickname=***&ownpassword=***&submit=Anmelden";

            // First hit the login page
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.codedragon.de/index.php?do=user_login.php");
            req.CookieContainer = cookieContainer;
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] loginDataBytes = encoding.GetBytes(loginData);
            req.ContentLength = loginDataBytes.Length;
            Stream stream = req.GetRequestStream();
            stream.Write(loginDataBytes, 0, loginDataBytes.Length);
            stream.Close();
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();

            // Then grab the content of the desired page
            req = (HttpWebRequest)HttpWebRequest.Create("http://www.codedragon.de/index.php?do=personal/meeting.php&pos=|21");
            req.CookieContainer = cookieContainer;
            req.Method = "GET";
            res = (HttpWebResponse)req.GetResponse();
            StreamReader sr = new StreamReader(res.GetResponseStream());
            html = sr.ReadToEnd();

            webBrowser1.Document.Body.InnerHtml = html;
        }

Kann ich mich bei der Seite anmelden jedenfalls erhalte ich im html mit den text "sie wurden erfolgreich angemeldet...."
nun versuch ich mit dem zweiten aufruf auf die profielseite zu gelangen, aber bin angeblich nicht angemeldet.

Irgendiwe hab ich ein Prob mit den Cookies... Ich habe im cookiecontainer einen cookie und in dem halt die phpsession aber wenn ich:

req.CookieContainer = cookieContainer;

hängt sich das ganze programm auf. Wenn ich die zeile auskommentiere läuft das programm aber bin nicht eingeligt weil ein neuer cookie benutzt wird.

ich hoffe mir kann jemand helfen und dank in voraus schon mal!
 
Die Lösung:
Code:
private void button6_Click(object sender, EventArgs e)
        {
            Uri uri = new Uri("http://www.codedragon.de");
            CookieContainer cookieContainer = new CookieContainer();
            string html;
            string loginData = "ownnickname=****&ownpassword=****&submit=Anmelden";

            HttpWebRequest sessionRequest = (HttpWebRequest)WebRequest.Create(uri);
            sessionRequest.CookieContainer = new CookieContainer();
            cookies = sessionRequest.CookieContainer;
            HttpWebResponse sessionResponse = (HttpWebResponse)sessionRequest.GetResponse();
            sessionResponse.Close(); // sehr wichtig!

            richTextBox1.Text += cookies.GetCookieHeader(uri) + "\n";

            // Einloggen
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.codedragon.de/index.php?do=user_login.php");
            req.CookieContainer = cookies;
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] loginDataBytes = encoding.GetBytes(loginData);
            req.ContentLength = loginDataBytes.Length;
            Stream stream = req.GetRequestStream();
            stream.Write(loginDataBytes, 0, loginDataBytes.Length);
            stream.Close();
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();

            // Eine Unterseite z.B. Profil
            req = (HttpWebRequest)HttpWebRequest.Create("http://www.codedragon.de/index.php?do=personal/meeting.php&pos=|21");
            req.CookieContainer = cookies;
            req.Method = "GET";
            res = (HttpWebResponse)req.GetResponse();
            StreamReader sr = new StreamReader(res.GetResponseStream());
            html = sr.ReadToEnd();

            webBrowser1.Document.Body.InnerHtml = html;
        }

Man muss sein response auch shcließen.
 
Zurück