其实 Response.Redirect 重定向就是向客户端的浏览器发送一个特殊的HTTP报头:
HTTP/1.1 302 Object Moved
Location http://redirecturl
浏览器读到此报头,就按Location值的指示载入页面。所以,获取重定向后的URL也就是获取HTTP头的Location值。
根据这一原理写的C#代码:
/// <summary>
/// 获取Response.Redirect重定向后的URL
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
/// <remarks>
/// using System.IO;
/// using System.Net;
/// </remarks>
static string GetRealUrl(string url)
{
Uri uri = new Uri(url);
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
webRequest.AllowAutoRedirect = false;
HttpWebResponse webResponse;
string realurl = string.Empty;
try
{
webResponse = (HttpWebResponse)webRequest.GetResponse();//404 WebException
realurl = webResponse.Headers["Location"];
if (realurl.Length < 7 || (realurl.Length >= 7 && realurl.Substring(0, 7) != "http://"))
{
Console.WriteLine("Yes");
if (realurl.Substring(0, 1) == "/")//绝对路径
{
realurl = string.Format("http://{0}{1}", uri.Authority, realurl);
}
else//相对路径
{
realurl = string.Format("http://{0}{1}", uri.Authority, uri.AbsolutePath.Replace(Path.GetFileName(uri.AbsolutePath), realurl));
}
}
}
catch { }
return realurl;
}参考文章
·关于获取Response.redirect重定向后的URL
·DownPlus Http 组件 用来获取重定向的URL
·获取软件下载的真实地址
评论(0)
暂无评论。