2012-04-14 9 views
2

Ich habe eine URL, die mich auf eine andere Website weiterleitet. Ich möchte die Ziel-URL von der ursprünglichen URL in C# abrufen. Gibt es eine Möglichkeit, diesen Weiterleitungen zu folgen?So erhalten Sie die Website-Umleitungsziel-URL (Endbenutzer-Link)

+0

Sie haben eine URL, und was machst du damit? WebRequest benutzen? –

+0

Ich brauche nur den "End-User-Link". Ich habe versucht, es das Webbrowser-Steuerelement zu laden, aber wenn ich den Speicherort der aktuellen Seite abrufen, zeigt es nur die erste URL, nicht das Ziel. – Pmillan

Antwort

4

können Sie verwenden, um die Klasse HttpWebRequest

var request = (HttpWebRequest)WebRequest.Create(someUrl); 
request.AllowAutoRedirect = false; 
var response = (HttpWebResponse) request.GetResponse(); 
if (response.StatusCode == HttpStatusCode.Found) // Found == 302 
{ 
    // Do something... 
    string newUrl = response.Headers["Location"]; 
} 

Außerdem können Sie Umleitungen folgen automatisch durch Einstellung:

request.AllowAutoRedirect = true; 
request.MaximumAutomaticRedirections = 4; //number of redirections allowed 

Verwandte: How do i check for a 302 response? WebRequest

+1

Response.ResponseUri.OriginalString bekomme ich was ich brauche. – Pmillan

+1

Minor nit: Ich bevorzuge die Umwandlung nach '(HttpWebRequest)' und '(HttpWebResponse)', da, wenn die Objekte irgendwie nicht den richtigen Typ hätten, das 'as' null zurückliefe und du eine 'NullReferenceException' auf der _nächste Zeile. Es ist besser, eine "InvalidCastException" sofort in der Zeile mit dem Problem zu erhalten. –

+0

@John Saunders Zustimmen! Ich habe den Code geändert – jorgebg