2009-05-28 204 views
0

我需要能夠從使用.net遠程處理的代碼中區分http 302重定向。如何處理.net遠程處理中的http 302重定向?

爲了連接到合適的URL,我們嘗試它們,直到一個作品。在大多數環境中,第一個url正確地失敗,並且狀態爲 WebExceptionStatus.NameResolutionFailure的System.Net.WebException。 對於使用OpenDNS的客戶,這會作爲重定向到其指導頁面的HTTP 302響應返回。因爲我正在使用.net Remoting,所以忽略重定向,並且我收到的錯誤是System.Runtime.Serialization.SerializationException,它只能通過消息「在分析完成之前遇到的流結束」區分。

這裏的OpenDNS的HTTP響應: HTTP/1.0 302實測值 位置:http://guide.opendns.com/?url=demonstration.totallyinvalidexceptonmynetwork.com%2Fi%2Fdo%2Fnot%2Fexist.html 內容類型:文本/ HTML 的Content-Length:0 連接:關閉 日期:星期四,2009年5月28日20時46: 26格林尼治標準時間 服務器:OpenDNS指南

回答

0

我假設發佈請求使用HttpWebRequest對象。然後,您可以像下圖一樣在HttpWebResponse對象中收到響應。 然後你可以檢查response.StatusCode屬性。如果是302則執行你的邏輯。

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
if (response.StatusCode = HttpStatusCode.Found) 
{ 
    //your code here 
} 

更新:如果您正在使用System.Net.Webclient,那麼你可以使用你可以使用它ResponseHeaders屬性。 Here是你如何使用它。

+0

.net遠程處理不公開HttpWebRequest或WebClient或任何相關的類。調用代碼會看到一個代理對象,它看起來像在服務器上調用的類型。 (是的,我知道這是2年前) – sphereinabox 2011-05-31 01:48:56