2011-05-19 113 views
0

我想從HTTPS頁面使用HttpWebRequest自動閱讀一些信息。我通常請求的鏈接重定向到具有登錄/密碼字段的頁面,該頁面被張貼到php文件中。HttpWebRequest到HTTPS網站與重定向

我有的代碼不工作,我只是回到包含帶有用戶名/密碼字段的表單的頁面信息。

我不知道我應該如何處理這種情況。

任何協助,總是非常讚賞。

在此先感謝。

NetworkCredential nc = new NetworkCredential(username, password); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://myaccount.talktalk.co.uk/myservices/bbusage/viewbbusage"); 
request.AllowAutoRedirect = true; 
request.Credentials = nc; 
request.Method = "POST"; 
CookieContainer cc = new CookieContainer(); 
request.CookieContainer = cc; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
{  
    Console.WriteLine(reader.ReadToEnd()); 
} 

回答

3
request.AllowAutoRedirect = true; 

此行是導致重定向頁面被跳過,因爲HttpRequest的自動跟隨在返回前的重定向鏈接。如果您想檢查重定向頁面,則將此標誌更改爲false。

編輯:

我可能誤解了問題,如果你的意思是,你正試圖獲得實際的頁面(而不是重定向或登錄頁面),那麼你不應該使用的NetworkCredential。 NetworkCredential僅適用於Basic,Kerbos和類似的基於瀏覽器的身份驗證系統,PHP站點使用基於表單的身份驗證,這需要您執行發佈請求。

在這種情況下,解決方案是獲取登錄表單,填寫相應的字段併發布,確保cookie保持一致,因爲您的cookie容器應該包含您的認證信息。

+0

感謝您的回覆......很抱歉,您可能會發布一些僞代碼,以瞭解所需的步驟?在這種情況下,我會提出多個要求嗎?再次感謝。 – Darren 2011-05-20 07:07:41

+0

@Darren:我會用[Fiddler2](http://fiddler2.com/fiddler2/)來看看正常的登錄頁面是什麼樣子的,然後按照[這些說明](http://msdn.microsoft.com/zh-cn/ com/en-us/library/debx8sh9.aspx)關於如何POST。最後確保你附加了你的CookieCollection並在調用之間維護對象。 – Guvante 2011-05-20 16:45:31