POST на страницу, возвращаемую через WebResponse - PullRequest
0 голосов
/ 17 января 2010

Я использую WebRequest для POST на страницу входа, которая перенаправляет меня на страницу, на которой мне действительно нужно публиковать сообщения.

Как я могу опубликовать на этой странице, на которую я был перенаправлен? Вот код:

***** НОВЫЙ ПЕРСОНАЛ *****

Вот что происходит после того, как я отправляю сообщение на страницу входа: GET /config/validate?.src=flickr&.pc=5134&.scrumb=6l14Ni2Pz3j&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=wFFF2AFFF2F5Af % 2Fyahoo% 2F% 3Fredir% 3D% 252Люди% 252Flindieb68% 252Отношения% 252F

GET / signin / yahoo /? Redir =% 2Fpeople% 2Flindieb68% 2Отношения%

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

GET / люди / lindieb68 / отношения /

Последнее, где мне нужно нажать кнопку. Должен ли я просто пройти через все эти GET и собрать куки? Я попробую это после обеда и дам тебе знать. Я чувствую, что это сработает. Я обновлюсь немного.

        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;
        }

Ответы [ 3 ]

1 голос
/ 17 января 2010

Соберите все куки-файлы из предыдущих ответов (вход в систему), так как по крайней мере один из них будет куки-файлом, который сообщает Yahoo, что вы уже вошли в систему. Затем включите куки-файлы с вашей записью на страницу назначения или любой другой взаимодействие с Yahoo.

Редактировать: В этой статье приведен полный пример кода для сбора и повторного использования файлов cookie.
http://blogs.msdn.com/dgorti/archive/2005/08/16/452347.aspx

0 голосов
/ 17 января 2010

Это становится сложным.

Краткий ответ: «Собрать печенье». По какой-то причине мне это не удается.

0 голосов
/ 17 января 2010

Установите для параметра AllowAutoRedirect значение true в экземпляре HttpWebREquest.

...