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

引用内容 引用内容
其实 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
·获取软件下载的真实地址

上一篇: WAP页面中文编码的实现
下一篇: cscript.exe调用vbs示例
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 11036
发表评论
登录后再发表评论!