2011-06-10 92 views
0

我試圖使用請求響應技術來驗證C#中特定站點中的所有鏈接。我注意到沒有任何鏈接返回「OK」。我着手解決這個問題。該網站需要認證。知道這一點,我應該怎麼做呢?驗證需要身份驗證的鏈接

這裏是我的代碼示例:

WebRequest objWebRequest; 
HttpWebResponse objHttpResponse; 
try 
{ 
     objWebRequest = (HttpWebRequest)WebRequest.Create(strCheckingLink); 
     objWebRequest.Timeout = 30000; 
     objHttpResponse = (HttpWebResponse)objWebRequest.GetResponse(); 
     if (objHttpResponse.StatusCode == HttpStatusCode.Redirect) 
     {} 
     if (objHttpResponse.StatusCode == HttpStatusCode.OK) 
     { 
       httpSCode = (int)objHttpResponse.StatusCode; 
       httpMsg = "OK"; 
       invalidLink = false; 
     } 
     else 
     { 
       invalidLink = true; 
     } 
} 

回答

0

你想對你的驗證碼正確驗證您的網站的網頁?

在這種情況下,您需要以編程方式向您的網站驗證自己。由於身份驗證通常是通過cookie完成的,因此您需要以某種方式獲取身份驗證cookie,然後將其附加到您的每個請求中。

+0

我應該以編程方式在我的代碼中創建cookie還是有任何其他方式? – Roopak 2011-06-10 14:54:17

+0

你不能自己創建一個身份驗證cookie(想想一個入侵者沒有對你的網站進行身份驗證,而是自己修改cookie)。您需要該網站將cookie發送給您。 – Zruty 2011-06-10 14:56:22

+0

我明白...但是,如果有一個合適的憑據?反正,我怎樣才能從網站獲取cookie?手動登錄後,我應該在本地計算機中找到Cookie?如果是,那麼如何? – Roopak 2011-06-10 15:07:02

0

1,Timeout (MSDN): 域名系統(DNS)查詢最多可能需要15秒才能返回或超時。如果您的請求包含需要解析的主機名,並且您將Timeout設置爲小於15秒的值,則可能需要15秒或更長時間纔會引發WebException,以指示請求超時。

2,重定向:如果一個頁面重定向到另一個頁面(狀態301和302),HttpWebResponse將自動獲得最終頁面,因此狀態爲200(OK)

3,如果沒有找到頁面(404)或服務器錯誤(500)或其他,將拋出WebException