我正在使用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下提供不同的内容。我必须找到另一种解决方案。
答案 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属性可能会打开安全性 漏洞。