Gibt es eine Möglichkeit, um zu bestimmen, ob eine Umleitung während einer WebRequest auftritt?
-
06-07-2019 - |
Frage
Ich verwende HttpWebRequest Wikipedia.org zu kratzen. Eine Menge Zeit wird es Links zu Themen auf einer Seite, die konsolidiert wurde, und deshalb sie leiten Sie auf die richtige Seite.
zum Beispiel
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)
leitet Sie auf das richtige Thema, das ist
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)
Beachten Sie die Hinzufügung des Wortes "the".
Ich muß an dieser Stelle, um zu bestimmen, ob eine Umleitung passiert ist. Kann jemand empfehlen, wie ich dies tun könnte?
Danke!
UPDATE
I markiert die Antwort unten als beantwortet, weil technisch das ist, wie Sie sagen, wenn Sie umgeleitet worden sind. Das Problem, das ich habe, ist die Wikipedia ist nicht wirklich ein tun hart umleiten mit http Antwortcodes 3xx. Sie tun weich Umleitungen , die unterschiedliche Inhalte unter der gleichen URL serviert. Ich werde eine andere Lösung finden haben.
Lösung
Versuchen Sie folgendes:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
Andere Tipps
Es gibt eine Eigenschaft namens „ AllowAutoRedirects “auf dem HttpWebRequest-Objekt. Wenn Sie diese Funktion deaktivieren, können Sie folgen der Umleitungen selbst.
Sie könnten auch versuchen HttpWebResponse überprüfen. ResponseUri .
Mit dem HttpWebRequest.Address Eigenschaft, die als „die URI nach irgendwelchen Umleitungen, die während der Anforderung passieren vollständig sind“ explizit definiert wird
Beachten Sie, dass dies sollte anstelle der sehr ähnlichen HttpWebResponse.ResponseUri , wie seine Dokumentation sagt:
Anwendungen, die die letzte umgeleiteten ResponseUri zugreifen müssen sollte die HttpWebRequest .. :: .. Adresse Eigenschaft statt ResponseUri, da die Verwendung von ResponseUri Eigenschaft kann öffnen Sicherheit Schwachstellen.