【问题标题】:Determine Final Destination of a Shortened URL确定缩短 URL 的最终目的地
【发布时间】:2009-07-10 16:57:08
【问题描述】:

我正在尝试找到最好的方法(在代码中)来确定缩短 URL 的最终目的地。例如http://tinyurl.com 重定向到 eBay 拍卖。我正在尝试获取 eBay 拍卖的 URL。我正在尝试从 .NET 中执行此操作,因此我可以比较多个 URL 以确保没有重复。

TIA

【问题讨论】:

    标签: c# asp.net class


    【解决方案1】:

    虽然我花了一分钟时间编写代码以确保它有效,但答案已经交付,但我还是发布了代码:

    private static string GetRealUrl(string url)
    {
        WebRequest request = WebRequest.Create(url);
        request.Method = WebRequestMethods.Http.Head;
        WebResponse response = request.GetResponse();
        return response.ResponseUri.ToString();
    }
    

    只要短网址服务执行常规重定向,这将起作用。

    【讨论】:

      【解决方案2】:

      您应该使用 HttpWebRequest 实例向 url 发出 HEAD 请求。在返回的 HttpWebResponse 中,检查 ResponseUri。

      只需确保在 HttpWebRequest 实例上将 AllowAutoRedirect 设置为 true(默认情况下为 true)。

      【讨论】:

        【解决方案3】:

        一种方法是读取 URL 并从中获取结果代码。如果它是 301(永久重定向),那么请跟随它带你去的地方。继续这样做,直到达到 200(OK)。使用 tinyurl 时,您可能会经历几个 301 直到达到 200。

        【讨论】:

          【解决方案4】:

          假设您不想实际点击链接,对于 TinyURL,您可以将 /info 附加到 url 的末尾:

          http://tinyurl.com/unicycles/info
          

          它会为您提供一个页面,显示该 tinyurl 链接到的位置,我认为使用 xpath 或类似方法很容易解析。

          大多数其他 URL 缩短服务具有类似的功能,但它们的工作方式都不同。

          【讨论】:

          • 我刚刚添加了 TinyURL 作为示例。许多公司也使用短网址。即:espn.com/streak 重定向到 espn.go.com/streak/....
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-26
          • 2014-12-01
          • 1970-01-01
          相关资源
          最近更新 更多