不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
C#获取Response.Redirect重定向后的URL
编辑:dnawo 日期:2010-03-30

其实 Response.Redirect 重定向就是向客户端的浏览器发送一个特殊的HTTP报头:
HTTP/1.1 302 Object Moved
Location http://redirecturl
浏览器读到此报头,就按Location值的指示载入页面。所以,获取重定向后的URL也就是获取HTTP头的Location值。
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
/// </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 | 引用: 0 | 查看次数: 11036
发表评论
请登录后再发表评论!