【问题标题】:Get full url from shorten url in C#.net从 C#.net 中的缩短 url 获取完整 url
【发布时间】:2017-05-11 18:21:36
【问题描述】:

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

但用户可能会输入http://www.google.com 的 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 的格式”之类的错误。

所以知道根据缩短网址找到完整网址的任何技术。

例如。 google.com 或 www.google.com 预期输出:http://www.google.com 或 https://www.google.com

PS : 我找到了在线网络工具 (http://urlex.org/),它会根据缩短 url 返回完整的 url

提前致谢。

【问题讨论】:

  • 看起来你可以使用urlex.org api,但你需要一个专业帐户!
  • 如果你可以使用一些 C# 代码,为什么还要使用它?
  • Patrick 是对的,您可能应该使用他的方法,但如果您想尝试使用 API,这里似乎也有免费的:expandurl.com/api.php

标签: c# url


【解决方案1】:

您可以使用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 释放了所有非托管资源。

【讨论】:

    【解决方案2】:

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

    我可能在这里误解了您的问题,但是如果缺少“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();
    }
    

    这基本上是您不指定任何协议时网络浏览器所做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 2014-12-01
      • 2013-01-15
      • 2013-04-08
      相关资源
      最近更新 更多