有没有办法确定在WebRequest期间是否发生重定向?

时间:2009-06-18 18:23:27

标签: asp.net redirect httpwebrequest

我正在使用HttpWebRequest来抓取Wikipedia.org。很多时候,页面上的主题会链接到已合并的内容,因此会将您重定向到正确的页面。

例如

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)

将您重定向到正确的主题

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)

请注意添加“the”一词。

此时我需要确定是否发生了重定向。谁能建议我怎么做?

谢谢!

更新

我将下面的回复标记为已回答,因为从技术上讲,这是您如何判断是否已被重定向。我遇到的问题是维基百科实际上并没有使用http响应代码3xx进行硬重定向。他们正在进行软重定向,它在同一个Url下提供不同的内容。我必须找到另一种解决方案。

3 个答案:

答案 0 :(得分:3)

HttpWebRequest对象上有一个名为“AllowAutoRedirects”的属性。如果你关闭它,你可以自己关注重定向。

您也可以尝试检查HttpWebResponse。ResponseUri

答案 1 :(得分:1)

试试这个:

if(reponse.ResponseUri != request.RequestUri) {
    //You were redirected
}

答案 2 :(得分:0)

使用HttpWebRequest.Address属性,该属性明确定义为“在请求完成期间发生的任何重定向后的URI”

请注意,应该使用此代替类似的HttpWebResponse.ResponseUri,因为其文档说明:

  

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