当前位置:编程学习 > C#/ASP.NET >>

C#模拟登陆问题

我提交的验证码和服务器验证码不同步,我用httpwatch观察过,一堆cookie,不过都是send属性,也就是说,是浏览器发送给服务器的,这样的话,难道是js生成的,所以我用httpwebresponse的时候只有一个cookie,求解释
 
CookieContainer container = new CookieContainer();
        private string GetHtml()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.douban.com/accounts/login?source=music");
           // request.Headers[HttpRequestHeader.Cookie] =" __utmc=30149280";
            request.CookieContainer = container;
            request.Credentials = CredentialCache.DefaultNetworkCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            container.Add(response.Cookies);
            ShowCookie(response.Cookies);
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string html = reader.ReadToEnd();
            reader.Close();
            reader.Dispose();
            return html;

        }
        private void ShowCookie(CookieCollection cc)
        {
            foreach(Cookie c in cc)
            {
                textBox2.Text += c.Name + "\r\n";
            }
        }
        private void GetImg(string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.CookieContainer = container;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            ShowCookie(response.Cookies);
            Stream read=response.GetResponseStream();
            Image img = Image.FromStream(read);
            read.Close();
            read.Dispose();
            pictureBox1.Image = img;

        }
        private string GetCheckCode()
        {
            Lexer lexer = new Lexer(GetHtml());
            Parser parser = new Parser(lexer);
            NodeFilter filterdown = new NodeClassFilter(typeof(Winista.Text.HtmlParser.Tags.ImageTag));
            NodeList list = parser.Parse(filterdown);
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i] is ImageTag)
                {
                    if ((list[i] as ImageTag).GetAttribute("ID") == "captcha_image")
                    {

                      return (list[i] as ImageTag).ImageURL;
                       
                    }
                }
            }
            return null;
        }
        private void button1_Click(object sender, EventArgs e)
        {
           // GetImg(GetCheckCode());
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.douban.com/accounts/login");
            request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/QVOD, application/QVOD, */*";
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MALN; CIBA; InfoPath.2; .NET4.0C; .NET4.0E; Media Center PC 6.0; Tablet PC 2.0; AskTB5.6)";
            request.Method = "Post";
            request.KeepAlive = true;
            request.ContentType = "application/x-www-form-urlencoded";
            request.ProtocolVersion = HttpVersion.Version10;
         
            request.CookieContainer = container;
            string postpara = "form_email=xxxxx&form_password=xxxxx&captcha_field='" + textBox1.Text + "'";
            Encoding encod = Encoding.UTF8;
            Byte[] post = encod.GetBytes(postpara);
            request.ContentLength = post.Length;
            Stream stream = request.GetRequestStream();
            stream.Write(post, 0, post.Length);
            stream.Close();
            stream.Dispose();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            textBox2.Text = reader.ReadToEnd();
            reader.Close();
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GetImg(GetCheckCode());
        }
C#   模拟登陆 C# HttpWebRequest
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,