2009-06-18 34 views
0

我正在使用HttpWebRequest来抓Wikipedia.org。很多时候,页面上的主题链接将被合并,因此他们会将您重定向到正确的页面。有没有办法确定WebRequest期间是否发生重定向?

例如

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” 的。

我需要确定此时是否发生了重定向。任何人都可以建议我如何做到这一点?

谢谢!

UPDATE

标志着我下面的回答,因为从技术上说是你如何知道您是否已被重定向的响应。我遇到的问题是维基百科实际上没有执行带有http响应码3xx的硬重定向。他们正在做软重定向,它在同一个Url下提供不同的内容。我将不得不寻找另一种解决方案。

回答

1

试试这个:

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

在HttpWebRequest对象上有一个名为“AllowAutoRedirects”的属性。如果您关闭该功能,则可以自行跟踪重定向。

您也可以尝试检查HttpWebResponse。 ResponseUri

0

使用HttpWebRequest.Address财产,“之后是请求期间发生的任何重定向完整的URI”

请注意,这应该是用来代替其被明确定义为类似HttpWebResponse.ResponseUri,作为其文档说:

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

相关问题