سؤال

أنا أستخدم WebRequest للنشر إلى صفحة تسجيل الدخول التي تعيد توجيهني إلى الصفحة التي أحتاج إليها حقًا.

كيف يمكنني النشر إلى هذه الصفحة التي تم إعادة توجيهها إلى؟ هنا هو الرمز:

*****أشياء جديدة*****

إليك ما يحدث بعد نشره إلى صفحة تسجيل الدخول: get /config/validate؟.src=flickr&.pc=5134 http ٪ 3a ٪ 2f ٪ 2fwww.flickr.com ٪ 2fsignin ٪ 2fyahoo ٪ 2f ٪ 3fredir ٪ 3d ٪ 252fpeople ٪ 252flindieb68 ٪ 252frelationship ٪ 252f

Get/signin/yahoo/؟ redir = ٪ 2fpeople ٪ 2flindieb68 ٪ 2frelationship ٪

get /cokie_check.gne؟pass=٪2FPeople٪2FlindieB68٪2Frelationship٪2F&fail=register_cookies.gne

الحصول على/الناس/lindieb68/العلاقة/

آخر واحد هو المكان الذي أحتاج إلى النقر فوق زر. هل يجب أن أذهب فقط من خلال كل هذه الأشياء وجمع ملفات تعريف الارتباط؟ سأحاول بعد العشاء وأعلمك بذلك. أشعر أن هذا سيعمل. سأقوم بالتحديث قليلاً.

        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;
        }
هل كانت مفيدة؟

المحلول

اجمع جميع ملفات تعريف الارتباط من استجابات (تسجيل الدخول) السابقة لأن واحد منهم على الأقل سيكون ملف تعريف الارتباط الذي يخبر Yahoo بأنك قمت بتسجيل الدخول بالفعل. ثم قم بتضمين ملفات تعريف الارتباط مع إعادة نشرك إلى صفحة الوجهة ، أو أي تفاعل آخر مع Yahoo .

يحرر: راجع هذه المقالة للحصول على مثال رمز كامل لجمع ملفات تعريف الارتباط وإعادة استخدامها.
http://blogs.msdn.com/dgorti/archive/2005/08/16/452347.aspx

نصائح أخرى

قم بتعيين lemtaUtoredirect إلى True على مثيل httpwebrequest الخاص بك.

هذا هو التعقيد.

يبدو أن الإجابة المختصرة هي جمع ملفات تعريف الارتباط. لسبب ما فشلت في القيام بذلك رغم ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top