2009-07-10 15 views
1

私は短縮URLの最終的な宛先を決定するための最良の方法(コード内)を見つけようとしています。たとえば、http://tinyurl.comはeBayオークションにリダイレクトされます。私はeBayオークションのURLを取得しようとしています。私は.NET内からこれをやろうとしているので、複数のURLを比較して重複がないようにすることができます。短縮URLの最終的な宛先を決定する

TIA

+0

実際にMVCに関連していません –

答えて

7

私はそれが答えはすでに配信された働いていたことを確認するためにコードを書い分を費やしたが、私はとにかくコードを投稿している間:

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

これは限りショートURLサービスは、定期的に行うように動作しますリダイレクト。

+0

コードをありがとう! –

0

TinyURLのためにあなたは、URLの末尾に/infoを追加することができ、あなたが実際にリンクをたどりたくないと仮定:

http://tinyurl.com/unicycles/info 

、それはあなたのことを示すページを提供しますtinyurlへのリンクです。これは、xpathなどを使って解析するのが簡単だと仮定しています。

他のURL短縮サービスのほとんどは同様の機能を備えていますが、それらはすべて機能が異なります。

+0

例としてTinyURLを追加しました。多くの企業も短期間を使用しています。すなわち:espn.com/streakはespn.go.com/streak /にリダイレクトされます。 –

+0

@Jason:ああ、わかりました。 – RichieHindle

1

URLを読み込んで結果コードを取得する方法もあります。それが301(永続的なリダイレクト)の場合は、それがあなたを取っている場所に従ってください。 200(OK)に達するまでこれを続けます。 tinyurlを使用すると、200に達するまで複数の301を通過する可能性があります。

+0

提案していただきありがとうございます! –

5

HttpWebRequestインスタンスを使用してURLにHEADリクエストを発行する必要があります。返されたHttpWebResponseで、ResponseUriを確認します。

HttpWebRequestインスタンスでAllowAutoRedirectがtrueに設定されていることを確認してください(デフォルトではtrueです)。

関連する問題