2009-06-18 36 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屬性可能會打開安全漏洞。

相關問題