2012-03-18 57 views
1

我想解開網址,但一直沒能找到代碼(vb.net/c#)來做到這一點。這些是Twitter縮短的URL,我想我可以嘗試訪問可用的Web服務之一,並執行httpwebrequest,但希望找到一些編程方式來做到這一點。unshortening urls

+4

如何使用'HttpWebRequest'訪問Web服務不是編程?你寫了一個程序來使用這個類,不是嗎? – BoltClock 2012-03-18 17:26:01

+0

您採取的任何方法都必須涉及對某些外部API執行查詢。 – 2012-03-18 17:27:26

回答

12

你可以直接從縮短網址的迴應中得到它,因爲它會返回一個狀態碼MovedPermanently以及真實網址的位置(這對大多數網站都適用,不需要導航到真實網址)

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://t.co/xqbLEi6s"); 
req.AllowAutoRedirect = false; 
var resp = req.GetResponse(); 
string realUrl = resp.Headers["Location"]; 

其他的測試數據:http://goo.gl/zdf2nhttp://tinyurl.com/8xc9vcahttp://x.co/iEuphttp://is.gd/vTOlz6http://bit.ly/FUA4YU

+0

或者您可以允許自動重定向並從resp.ResponseUri屬性獲取真實URL: 'HttpWebRequest req =(HttpWebRequest)WebRequest.Create(「http://t.co/xqbLEi6s」); var resp = req.GetResponse(); string realUrl = resp.ResponseUri.AbsoluteUri;' – Yuriy 2013-10-04 08:35:01

+0

@Yuriy爲什麼我應該加載整個(可能很大)的頁面,當我可以做一個小的響應。 – 2013-10-04 08:54:03

+0

我還沒有想過,你是對的,你的代碼更有效率。 – Yuriy 2013-10-04 12:56:05

4

在沒有詢問創建URL的服務(並且每種服務的請求方式會不同)的情況下,或者更實用地說,只需打開URL並查看其重定向到的位置,沒有任何神奇的方法可以解除URL的釋放。