如何检测URL是否被重定向到另一个?

问题描述:

我使用此代码向网址发送'GET'请求。如何检测URL是否被重定向到另一个?

var request = WebRequest.Create(uri) as HttpWebRequest; 
request.Method = "GET"; 
var response = request.GetResponse() as HttpWebResponse; 
var status = response.StatusCode; // returns HttpStatusCode.OK 

所以,probelem是当一个url被重定向到另一个时,我无法检测到它。例如, ;

url is: http://site.com 

that redirects to http://www.site.com 

但是当我主动要求http://site.com它返回一个HttpStatusCode.OK它-instead的重定向代码。请问你有什么想法吗?

您可以使用AllowAutoRedirect属性。将其设置为false并处理重定向。

+0

我认为OP希望得到“重定向”状态代码而不是“OK”,你的答案就是如何处理重定向,而不是获取OP所需的状态码。 – 2012-07-23 19:03:27

+0

@MikyDinescu它的工作原理。谢谢 – 2012-07-23 19:11:50

使用HttpWebRequest.Address属性,它

注意,这应该使用类似HttpWebResponse.ResponseUri的,因为它的文档中说“是完整的请求过程中发生的任何重定向后的URI”被明确定义为:

的应用程序需要访问的最后一个重定向ResponseUri 应该使用HttpWebRequest..::..Address属性,而不是 ResponseUri,因为使用ResponseUri财产可能会打开安全漏洞 。