从C#.net中缩短网址获取完整网址

时间:2016-12-27 12:51:50

标签: c# url

我正在开发一个应用程序,我需要根据用户提供的URL捕获网站的标题,描述和图像等基本细节。

但是,用户可能会输入www.google.com http://www.google.com,但C#.net代码无法检索" www.google.com"通过以下代码

sigprocmask(SIG_SETMASK, &oldmask, NULL)

并发现错误,如"无效的URI:无法确定URI的格式。"

所以要知道基于缩短网址找到完整网址的任何技术。

代表。 google.com或www.google.com 预期输出:http://www.google.comhttps://www.google.com

PS:我找到了基于缩短网址返回完整网址的在线网络工具(http://urlex.org/

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用UriBuilder创建一个HTTP作为默认方案的URL:

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来释放所有非托管资源。

答案 1 :(得分:1)

  

所以要知道基于缩短网址找到完整网址的任何技术。

我可能在这里误解了你的问题但你不能只是附加“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();
}

这基本上是当您未指定任何协议时Web浏览器所执行的操作。