木子屋 Dnawo's BLOG

C#获取Response.Redirect重定向后的URL

👤 dnawo 📅 2010-03-30 👁 11863 👍 0 💬 0 🔄 本站原创
其实 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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 WAP页面中文编码的实现 下一篇 → cscript.exe调用vbs示例