短縮URLの展開

短縮URLから短縮前のURLを取得する簡単なコード片。探しても見つからないんで作ってみました。

using(WebClient wc = new WebClient())
{
	wc.DownloadString("http://bit.ly/xxxx");

	var info = typeof(WebClient).GetField("m_WebResponse", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance);
	var response = info.GetValue(this.ExpandServiceConnector) as HttpWebResponse;

	Console.WriteLine(response.ResponseUri);
}

http://bit.ly/xxxxの部分は短縮URLサービスによって短縮されたURLに書き換えれば使えるはず。
WebClientで実際にその短縮URLを踏み、リフレクションを使ってどこのページに繋がったのかを取ってきてくれます。

リフレクション使わないでも、HttpWebRequestで短縮URLを踏んで、HttpWebResponseでResponseUrlを取ればいいじゃん…って突っ込みはなしで。