2011-05-16 24 views
2

我在寫一段C#代碼的測試代碼,它登錄Facebook並捕獲cookie。我只是爲了教育目的而做的。我已經獲得了一項任務,可以自動完成表單上傳,下載以及在我的工作和第三方之間提交表單的工作,這是我必須正確對待的那些事情之一,而且我必須在第一時間做好準備。因此我爲什麼認爲我會在Facebook和其他一些網絡服務上做一些練習。C#web服務器沒有看到存儲的cookie

我:

string postMessage = "user=" + username + "&pass=" + password; 
CookieContainer cookieJar = new CookieContainer(); 
MessageBox.Show(cookieJar.Count + " cookies"); // 0 cookies, as expected. 

HttpWebRequest wReq 
= (HttpWebRequest)HttpWebRequest.Create("https://www.facebook.com/login.php"); 
wReq.Proxy    = HttpWebRequest.GetSystemWebProxy(); 
wReq.Proxy.Credentials = CredentialCache.DefaultCredentials; 
wReq.UserAgent 
    = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 " 
    + "(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24"; 
wReq.CookieContainer = cookieJar; 
wReq.Method   = "POST"; 
wReq.ContentLength  = postMessage.Length; 
wReq.ContentType  = "application/x-www-form-urlencoded"; 

StreamWriter sw = null; 

try 
{ 
    sw = new StreamWriter(wReq.GetRequestStream()); 
    sw.Write(postMessage); 
} 
catch 
{ 
    return false; 
} 
finally 
{ 
    sw.Close(); 
} 

string result = string.Empty; 

HttpWebResponse wResp = (HttpWebResponse)wReq.GetResponse(); 
using (StreamReader sr = new StreamReader(wResp.GetResponseStream())) 
{ 
    result = sr.ReadToEnd(); 
    sr.Close(); // BREAKPOINT 1 
} 

MessageBox.Show(cookieJar.Count + " cookies"); // 6 cookies. 

wReq 
    = (HttpWebRequest)HttpWebRequest.Create("http://www.facebook.com/home.php"); 
wReq.Proxy = HttpWebRequest.GetSystemWebProxy(); 
wReq.Proxy.Credentials = CredentialCache.DefaultCredentials; 
wReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 " 
    + "(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24"; 
wReq.CookieContainer = cookieJar; 

result = string.Empty; 

wResp = (HttpWebResponse)wReq.GetResponse(); 
using (StreamReader sr = new StreamReader(wResp.GetResponseStream())) 
{ 
    result = sr.ReadToEnd(); 
    sr.Close(); // BREAKPOINT 2 
} 

如果我在斷點1檢查result,我可以看到結果對於Facebook的登錄頁面的HTML代碼。它告訴我,即使我的cookiaJar已經捕獲了6個Cookie,我的瀏覽器中仍未啓用Cookie。

同樣,如果我在斷點2檢查result,我可以看到html代碼告訴我「我必須登錄才能看到此頁面」。

現在,我知道Facebook的工作沒有JavaScript,我在我的cookieJar捕獲6個餅乾。我有點困惑,爲什麼這不起作用? (順便說一句,我的密碼有大寫,小寫,數字和符號,我需要用URLEncode()對它進行編碼嗎?我已經使用純文本密碼成功登錄到另一個網站,而不需要編碼密碼。)

回答

1

您從登錄的https切換到http進行讀取。嘗試更改第二次閱讀以使用https以及看看是否有幫助。

相關問題