2009-07-10 9 views
1

Ich versuche den besten Weg (im Code) zu finden, um das endgültige Ziel einer verkürzten URL zu bestimmen. Zum Beispiel wird http://tinyurl.com zu einer eBay-Auktion weitergeleitet. Ich versuche, die URL für die eBay-Auktion zu erhalten. Ich versuche, dies in .NET zu tun, damit ich mehrere URLs vergleichen kann, um sicherzustellen, dass es keine Duplikate gibt.Ermitteln des endgültigen Ziels einer verkürzten URL

TIA

+0

Nicht wirklich mit MVC verwandt –

Antwort

7

Während verbrachte ich eine Minute, um den Code zu schreiben, um sicherzustellen, dass sie die Antwort gearbeitet wurde bereits geliefert, aber ich schreibe den Code trotzdem:

private static string GetRealUrl(string url) 
{ 
    WebRequest request = WebRequest.Create(url); 
    request.Method = WebRequestMethods.Http.Head; 
    WebResponse response = request.GetResponse(); 
    return response.ResponseUri.ToString(); 
} 

Dies funktioniert, solange der Kurz-URL-Dienst regelmäßig tut umleiten.

+0

Danke für den Code! –

0

Angenommen, Sie wollen nicht wirklich dem Link zu folgen, für TinyURL Sie /info zum Ende der URL anfügen können:

http://tinyurl.com/unicycles/info 

und es gibt Ihnen eine Seite zeigt, wo diese tinyurl verweist auf, von dem ich annehme, dass es mit xpath oder ähnlichem leicht zu analysieren wäre.

Die meisten anderen URL Verkürzung Dienstleistungen haben ähnliche Funktionen, aber sie alle arbeiten anders.

+0

Ich habe gerade TinyURL als Beispiel hinzugefügt. Viele Unternehmen nutzen auch Shorturls. ie: espn.com/streak leitet weiter zu espn.go.com/streak/.... –

+0

@Jason: Ah, OK, ich verstehe. – RichieHindle

1

Eine Möglichkeit wäre, die URL zu lesen und den Ergebniscode daraus zu erhalten. Wenn es eine 301 (permanente Weiterleitung) ist, dann folge, wo es dich hinbringt. Fahren Sie fort, bis Sie 200 (OK) erreichen. Wenn tinyurl verwendet, könnte es passieren, dass Sie durch mehrere 301 gehen, bis Sie einen 200

+0

Danke für den Vorschlag! –

5

Sie erreichen sollte eine HEAD-Anfrage an die URL Ausgabe eine HttpWebRequest-Instanz verwenden. Überprüfen Sie in der zurückgegebenen HttpWebResponse das ResponseUri.

So stellen Sie sicher, dass der AllowAutoRedirect auf true auf der HttpWebRequest-Instanz festgelegt wird (es ist standardmäßig true).

Verwandte Themen