a379101 2013-06-09 06:09 采纳率: 0%
浏览 3323

C# 如何使用 HttpWebReques 编写baidu(百度)自动登录,请高手帮忙看看,如何解决?

下面是我写的代码,不知道那里出错,实现不了登录,请帮忙解决...先说声谢谢啦代码:


string postdata = "ppui_logintime=482599&charset=utf-8&codestring=&token=e80e24119525675ba6ee9e0e15c6a8be&isPhone=false&index=0&u=&safeflg=0&staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html&loginType=1&tpl=mn&callback=parent.bdPass.api.login._postCallback&username=xx&password=xx&verifycode=&mem_pass=on";
            string url = "https://passport.baidu.com/v2/api/?login";
            //准备发送请求
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            Encoding myEncoding = Encoding.GetEncoding("UTF-8");
            byte[] data = myEncoding.GetBytes(postdata);
            CookieContainer cc=new CookieContainer();

            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
            request.KeepAlive = true;
            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; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E))";
            request.CookieContainer=cc;          
            request.ContentLength = data.Length;

            //





            //发送数据

            Stream webStream = request.GetRequestStream();
            webStream.Write(data, 0, data.Length);
            //webStream.Close();

            webStream.Flush();

            //获取返回数据

            HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();

            StreamReader reader = new StreamReader(webResponse.GetResponseStream(), myEncoding );
            postdata = reader.ReadToEnd();
            Console.WriteLine(postdata);
            webResponse.Close();
            postdata.Trim();


            //Cookies 

            CookieContainer cs = new System.Net.CookieContainer();
            System.Net.CookieCollection cc1 = cc.GetCookies(new Uri("https://passport.baidu.com/v2/api/?login")); 
            foreach (System.Net.Cookie item in cc1) { 
                Console.WriteLine(item.Name); 
                Console.WriteLine(item.Value); }


            webBrowser1.Navigate("www.baidu.com");
  • 写回答

1条回答 默认 最新

  • 南方音阁 2018-04-30 08:18
    关注

    首先你要确认百度登录请求的数据是什么,然后将你的账号和密码通过请求发送出去,请求成功百度服务器会响应一些数据,我觉得你是错在请求方面了

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站