有没有办法确定在WebRequest期间是否发生重定向?
-
06-07-2019 - |
题
我正在使用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下提供不同的内容。我必须找到另一种解决方案。
解决方案
试试这个:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
其他提示
有一个名为“ AllowAutoRedirects &QUOT;在HttpWebRequest对象上。如果你关闭它,你可以自己关注重定向。
你也可以尝试检查HttpWebResponse. ResponseUri 。
使用 HttpWebRequest.Address property,明确定义为“在请求完成期间发生的任何重定向后的URI”
请注意,这应该用来代替类似的 HttpWebResponse.ResponseUri ,正如其文档所述:
需要访问上次重定向的ResponseUri的应用程序 应该使用 HttpWebRequest .. :: .. Address 财产而不是 ResponseUri,因为使用ResponseUri属性可能会打开安全性 漏洞。