【发布时间】:2009-07-10 16:57:08
【问题描述】:
我正在尝试找到最好的方法(在代码中)来确定缩短 URL 的最终目的地。例如http://tinyurl.com 重定向到 eBay 拍卖。我正在尝试获取 eBay 拍卖的 URL。我正在尝试从 .NET 中执行此操作,因此我可以比较多个 URL 以确保没有重复。
TIA
【问题讨论】:
我正在尝试找到最好的方法(在代码中)来确定缩短 URL 的最终目的地。例如http://tinyurl.com 重定向到 eBay 拍卖。我正在尝试获取 eBay 拍卖的 URL。我正在尝试从 .NET 中执行此操作,因此我可以比较多个 URL 以确保没有重复。
TIA
【问题讨论】:
虽然我花了一分钟时间编写代码以确保它有效,但答案已经交付,但我还是发布了代码:
private static string GetRealUrl(string url)
{
WebRequest request = WebRequest.Create(url);
request.Method = WebRequestMethods.Http.Head;
WebResponse response = request.GetResponse();
return response.ResponseUri.ToString();
}
只要短网址服务执行常规重定向,这将起作用。
【讨论】:
您应该使用 HttpWebRequest 实例向 url 发出 HEAD 请求。在返回的 HttpWebResponse 中,检查 ResponseUri。
只需确保在 HttpWebRequest 实例上将 AllowAutoRedirect 设置为 true(默认情况下为 true)。
【讨论】:
一种方法是读取 URL 并从中获取结果代码。如果它是 301(永久重定向),那么请跟随它带你去的地方。继续这样做,直到达到 200(OK)。使用 tinyurl 时,您可能会经历几个 301 直到达到 200。
【讨论】:
假设您不想实际点击链接,对于 TinyURL,您可以将 /info 附加到 url 的末尾:
http://tinyurl.com/unicycles/info
它会为您提供一个页面,显示该 tinyurl 链接到的位置,我认为使用 xpath 或类似方法很容易解析。
大多数其他 URL 缩短服务具有类似的功能,但它们的工作方式都不同。
【讨论】: