2016-12-27 131 views
1

我正在開發一個應用程序,我需要基於用戶提供的網址捕獲基本的詳細信息,如標題,描述和網站圖像。從C#中縮短網址獲得完整的網址.net

但用戶可輸入www.google.com insted的的http://www.google.com但C#.NET代碼無法爲「www.google.com」檢索數據通過下面的代碼

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url)); 
request.Method = WebRequestMethods.Http.Get; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream()); 
String responseString = reader.ReadToEnd(); 
response.Close(); 

,發現錯誤,如「無效URI:無法確定URI的格式。「

所以,要知道任何技術,以縮短網址的基礎上找到完整的網址。

for ex。 google.com或www.google.com 預期輸出:http://www.google.comhttps://www.google.com

PS:我在網上找到的網絡工具(http://urlex.org/),將返回基於縮短的URL完整網址提前

感謝。

+0

看起來你可以使用'urlex.org' api,但你需要一個專業賬戶! – Bassie

+0

爲什麼使用這個,如果你只能使用一些C#代碼? –

+0

帕特里克是正確的,你應該使用他的方法,但如果你想嘗試一個API,這裏似乎也有一個免費的:http://expandurl.com/api.php – Bassie

回答

2

您可以使用UriBuilder創建一個URL與HTTP爲默認方案:

UriBuilder urb = new UriBuilder("www.google.com"); 

Uri uri = urb.Uri; 

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); 

request.Method = WebRequestMethods.Http.Get; 

string responseString; 
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
    { 
     responseString = reader.ReadToEnd(); 
    } 
} 

如果URL中包含一個方案,它將使用一個,而不是默認的HTTP方案。我也用using來釋放所有非託管資源。

+0

感謝帕特里克的支持和時間 –

1

所以,要知道任何技術,基於縮短url找到完整的網址。

我可能在這裏誤解了你的問題,但是如果缺少它,你不能追加「http://」嗎?

string url = "www.google.com"; 

if (!url.StartsWith("http")) 
    url = $"http://{url}"; 
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url)); 
request.Method = WebRequestMethods.Http.Get; 
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
{ 
    String responseString = reader.ReadToEnd(); 
} 

這基本上是一個網頁瀏覽器做什麼時,你不指定任何協議。

+0

這也是替代解決方案,但帕特里克更適合我 –