2010-01-16 69 views
0

我正在使用WebRequest發佈到登錄頁面,該頁面將我重定向到我真正需要發佈的頁面。發佈到WebResponse頁面返回

如何發佈到此頁面我已被重定向到?這裏是代碼:

*****新的東西*****

我在這裏張貼到登錄頁面後,所發生的事情: GET /config/validate?.src=flickr & .PC = 5134 & .scrumb = 6l14Ni2Pz3j & .PD = C%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM- & .intl =我們& .done = HTTP%3A%2F%2Fwww.flickr.com%2Fsignin%2Fyahoo%2F%3Fredir% 3D%252Fpeople%252Findindbb%252Frelationship%252F

GET/signin/yahoo /?redir =%2Fpeople%2Findinb68%2Frelationship%

GET /cookie_check.gne?pass=%2Fpeople%2Flindieb68%2Frelationship%2F &失敗= register_cookies.gne

GET /人/ lindieb68 /關係/

最後一個是我需要點擊一個按鈕。我應該只是通過所有這些GETs並收集餅乾?晚餐後我會嘗試,並讓你知道。我覺得這會起作用。我會稍微更新一下。

 private CookieContainer LoginYahoo(CookieContainer cookies) 
     { 
      string appURL = "https://login.yahoo.com/config/login?.src=flickr&.pc=5134&.scrumb=0&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickr%26.pc%3D5134%26.scrumb%3D0%26.pd%3Dc%253DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fpeople%25252Flindieb68%25252Frelationship%25252F&rl=1"; 
      string strPostData = ".tries=1&.src=flickr&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner=&.u=0delt5h5l4df0&.v=0&.challenge=3DZF0DFFqdE0m.9MWnCq6LjUZ9gV&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=1&.chkP=Y&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickr%26.pc%3D5134%26.scrumb%3D0%26.pd%3Dc%253DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fpeople%25252Flindieb68%25252Frelationship%25252F&.pd=flickr_ver%3D0%26c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26ivt%3D%26sg%3D&login=loginName&passwd=Password&.persistent=y&.save=Sign+In"; 

      // Setup the http request. 
      HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as 
      HttpWebRequest; 
      wrWebRequest.Method = "POST"; 
      wrWebRequest.ContentLength = strPostData.Length; 
      wrWebRequest.ContentType = "application/x-www-form-urlencoded"; 
      CookieContainer cookieContainer = cookies; 
      wrWebRequest.CookieContainer = cookieContainer; 

      // Post to the login form. 
      StreamWriter swRequestWriter = new 
      StreamWriter(wrWebRequest.GetRequestStream()); 
      swRequestWriter.Write(strPostData); 
      swRequestWriter.Close(); 

      // Get the response. 
      HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); 

      // Read the response 
      StreamReader srResponseReader = new 
      StreamReader(hwrWebResponse.GetResponseStream()); 
      string strResponseData = srResponseReader.ReadToEnd(); 
      srResponseReader.Close(); 

      //YOU ARE NOW LOGGED IN TO YAHOO! 
      //NEED TO POST AGAIN TO WHAT hwrWebResponse RETURNS 
      ShowInBrowser(strResponseData); 
      return cookieContainer; 
     } 
+0

這是更復雜的只是調用你已經有了不同的網址的代碼? – Ray 2010-01-16 22:18:48

+0

是的。當我這樣做時,它試圖讓我再次登錄。這讓我馬上回到了我開始的地方。 另外,AllowAutoRedirect爲true。它將我重定向到我想去的地方。我只是不知道如何發佈什麼東西,它重定向到。就像我說的那樣,如果我嘗試直接訪問該頁面,就會再次登錄。 我登錄代碼中的網址。我需要點擊「http://flickr.com/people/lindieb68/relationship/」上的按鈕。 此發佈的代碼會將我重定向到那裏,但在您登錄並嘗試去那裏後,它會再次要求輸入密碼。 我不知道該怎麼做。 – Jason 2010-01-16 22:22:30

+0

順便說一句,這是世界上最好的網站。今天剛開始使用它。詢問和回答問題很有趣。幾乎喜歡玩WoW,但編程和完成任務而不是浪費= D – Jason 2010-01-16 22:23:59

回答

1

從以前的(登錄)回覆中收集所有的cookies,因爲它們中的至少一個將是告訴Yahoo您已經登錄的cookie。然後將cookies包含您的post poststore到目標頁面或任何與雅虎的其他互動。

編輯:有關收集和重新使用cookie的完整代碼示例,請參閱此文章。
http://blogs.msdn.com/dgorti/archive/2005/08/16/452347.aspx

+0

沒有工作。 =( – Jason 2010-01-17 02:46:15

+0

)當您將autoredirect設置爲true時,它是否會沿其路徑收集cookie?就像它重定向然後重定向並重定向一樣,它會在每個站點收到cookie(如果有Cookie),還是必須手動執行?無論哪種方式 – Jason 2010-01-17 03:07:08

+0

使用Fiddler(或其他HTTP調試代理)從瀏覽器的正常登錄中捕獲流量,然後確認您的程序化請求包含相同的Cookie – AUSteve 2010-01-17 06:48:34

0

在您的HttpWebREquest實例上將AllowAutoRedirect設置爲true。

+0

我做到了。它重定向到我需要點擊提交按鈕的頁面。我只是不知道如何發佈到它重定向到的頁面。當我嘗試直接訪問它時,它使我再次登錄。 – Jason 2010-01-16 22:37:50

0

這變得越來越複雜。

簡短的答案似乎是收集餅乾。出於某種原因,我雖然失敗了。