Benutzer mit den meisten Antworten
Session - Cookie verwenden

Frage
-
Hallo,
ich steh hier gerade vor einem "Problem":
Ich habe ein Application welche automatisiert ein Webformular ausfüllt (POST-Methode [PHP]). Dies funktioniert auch ausgezichnet.
Doch diese besagete Seite kann man nur aufrufen wenn man sich zuvor angemeldet hat. Bei dieser Anmeldung wird ein (SM)Session-Cookie geschrieben. [SM steht für SiedeMider]
Wie kann ich einen (LoginSession)-Cookie so verwenden wie es z.B. der IE auch tut ? Das ich über eine bestimmte Zeit angemeldet bleibe.
Ich hoffe ihr versteht meine Fragestellung :).
Vielen Dank
Stephan Traub
Antworten
-
Hallo Stephan,
Doch diese besagete Seite kann man nur aufrufen wenn man sich zuvor angemeldet hat. Bei dieser Anmeldung wird ein (SM)Session-Cookie geschrieben. [SM steht für SiedeMider]
Wie kann ich einen (LoginSession)-Cookie so verwenden wie es z.B. der IE auch tut ? Das ich über eine bestimmte Zeit angemeldet bleibe.
Bei einem "SM" Cookie ist alles klar, das kann ja nur mit schmerzen verbunden sein :)
Ne, im Ernst. Arbeitet die Webanwendung mit einem Sessioncookie oder mit einem Url Parameter wie bspw. xyz.php?phpsessid=12345678 (oder ähnlichem)?
Wenn es ein Sessioncookie ist, musst Du die Rückantwort der Loginseite auslesen, merken und bei folgenden Requests wieder mit senden.
Dim SessionCookie As String SessionCookie = <HttpWebResponse>.Headers( System.Net.HttpResponseHeader.SetCookie ) ...
Siehe dazu auch:
http://msdn.microsoft.com/de-de/library/system.net.httpwebresponse.aspx
http://msdn.microsoft.com/de-de/library/system.net.httpresponseheader.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Stephan T._ Mittwoch, 7. Juli 2010 14:50
Alle Antworten
-
Hallo Stephan,
Doch diese besagete Seite kann man nur aufrufen wenn man sich zuvor angemeldet hat. Bei dieser Anmeldung wird ein (SM)Session-Cookie geschrieben. [SM steht für SiedeMider]
Wie kann ich einen (LoginSession)-Cookie so verwenden wie es z.B. der IE auch tut ? Das ich über eine bestimmte Zeit angemeldet bleibe.
Bei einem "SM" Cookie ist alles klar, das kann ja nur mit schmerzen verbunden sein :)
Ne, im Ernst. Arbeitet die Webanwendung mit einem Sessioncookie oder mit einem Url Parameter wie bspw. xyz.php?phpsessid=12345678 (oder ähnlichem)?
Wenn es ein Sessioncookie ist, musst Du die Rückantwort der Loginseite auslesen, merken und bei folgenden Requests wieder mit senden.
Dim SessionCookie As String SessionCookie = <HttpWebResponse>.Headers( System.Net.HttpResponseHeader.SetCookie ) ...
Siehe dazu auch:
http://msdn.microsoft.com/de-de/library/system.net.httpwebresponse.aspx
http://msdn.microsoft.com/de-de/library/system.net.httpresponseheader.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Stephan T._ Mittwoch, 7. Juli 2010 14:50
-
Hallo,
danke für die schnelle Antwort! So etwas in der Art habe ich mir schon gedacht.
private string HttpPost(string p1, string p2, string p3, string p4) { string URI = "https://.../ssl-test/delivery.php"; string Parameters = "reissued="+p4+"&eon="+p2+"&ion="+p3+"&crtfile="+p1; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URI); req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; ASCIIEncoding encoding = new ASCIIEncoding(); byte[] byte1 = encoding.GetBytes(Parameters); req.ContentLength = byte1.Length; Stream newStream = req.GetRequestStream(); newStream.Write(byte1, 0, byte1.Length); newStream.Close (); System.Net.WebResponse resp = req.GetResponse(); if (resp== null) return null; Thread.Sleep(1000); System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); //Debug webBrowser1.DocumentText = sr.ReadToEnd().Trim().ToString(); MessageBox.Show(sr.ReadToEnd().Trim().ToString()); test(); return sr.ReadToEnd().Trim(); }
Hier mal meine Post-Klasse.
Es handelt sich um ein Sessioncookie - Wie kann ich jetzt die rückantwort einbauen bei jedem Request ?
Gruß
-
Hallo Stephan,
Es handelt sich um ein Sessioncookie - Wie kann ich jetzt die rückantwort einbauen bei jedem Request ?
req.Headers.Add( "<Headername>", "<Headerwert>" )
bzw.
req.Headers.Add( "Cookie", "<Cookieinhalt>" )
(Kommt darauf an, was genau das PHP Skript erwartet)
Aber zuvor musst Du den Wert nach dem Login schon noch auslesen, das sehe ich in deinem Code nirgends.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community