Gewusst wie: abrufen einer html-Webseite umgeleitet programmgesteuert?
Habe ich dies getan-code für den login,das abrufen und anzeigen einer Webseite :
//login info array
string postData = "user_name=tler";
postData += "&user_password=lodvader";
byte[] data = Encoding.ASCII.GetBytes(postData);
//web request
WebRequest req = WebRequest.Create("http://www.lol.com/login.php");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;
//stream response to string
Stream newStream = req.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), Encoding.GetEncoding("iso-8859-1"));
string responseString = reader.ReadToEnd();
//retrieve text within title
Regex rx = new Regex(@"(?<=<title>).+?(?=</title>)");
var variable = rx.Matches(responseString);
//output
Console.WriteLine(variable[0]);
Console.ReadLine();
Aber, auf der folgenden Seite nach der Anmeldung wird ein html-redirect wie :
<meta http-equiv="refresh" content="3; URL="bb.php">
Wie Folgen Sie diesem link und abrufen der nächsten Seite ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Senden Sie einfach ein neues WebRequest zu der bb.php Datei. Stellen Sie sicher, dass Sie die gleichen CookieContainer da ich vermute, dass login.php nutzt cookie-basierte sessions zu erinnern Sie. Überprüfen Sie heraus die HttpWebRequest.CookieContainer Eigenschaft. Dies erfordert, dass Sie werfen Sie Ihre WebRequest zu einem HttpWebRequest.
Hinzugefügt: (Konnte nicht schreiben Beispiel-code in den Kommentar.)
Ich mich einfach nur code ohne proofing jetzt...
Habe ich die Zeit gefunden, es zu beenden, hier die Antwort ( ich habe versucht, so klar wie möglich ) :
Es ist eine Eigenschaft HttpWebRequest genannt AllowAutoRedirects. Setzen Sie diese auf true. Auch es gibt eine Eigenschaft namens " MaximumAutomaticRedirections. Gesetzt, dass einige zulässige Wert um sicherzustellen, dass alle von Ihnen sind gefolgt.
Können Sie es nicht eine einfache Möglichkeit, da der meta-tag wird vom client gelesen und ausgeführt.
In diesem Fall, wenn Sie mit HttpWebRequest, die Anfrage kümmert sich nicht um die Funktionen, die der text haben kann.
So müssen Sie zu tun eine weitere Anforderung an die Seite in das URL-Attribut (bb.php).
-
Wenn der server hat die Umleitung, die Sie nicht haben, das problem.