用HttpWebRequest 模拟网站登录时,如何将存在本机电脑中cookies文件中的cookies解析出来并一同提交?例如本机电脑中cookies文件中存有一网站登录的用户名和密码,如何将用户名和密码从cookies解析出来并一同提交?谢谢!

解决方案 »

  1.   

    去了解下HTTP协议原理吧  嘿嘿
      

  2.   

    static void Post(string url, string indata)
            {
                
                string outdata = "";            CookieContainer myCookieContainer = new CookieContainer();
                //新建一个CookieContainer来存放Cookie集合             HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                //新建一个HttpWebRequest 
                myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
                myHttpWebRequest.ContentLength = indata.Length;
                myHttpWebRequest.Method = "POST";
                myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705)";
                myHttpWebRequest.CookieContainer = myCookieContainer;
                //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 
                Stream myRequestStream = myHttpWebRequest.GetRequestStream();
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
                myStreamWriter.Write(indata,0,indata .Length);
                //把数据写入HttpWebRequest的Request流 
                myStreamWriter.Close();
                myRequestStream.Close();
                //关闭打开对象             HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                //新建一个HttpWebResponse 
                myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
                //获取一个包含url的Cookie集合的CookieCollection 
                Stream myResponseStream = myHttpWebResponse.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
                outdata = myStreamReader.ReadToEnd();
                //把数据从HttpWebResponse的Response流中读出 
                myStreamReader.Close();
                myResponseStream.Close();
                Console.WriteLine(outdata);
                //显示"登录"             //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 
                myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                myHttpWebRequest.CookieContainer = myCookieContainer;//* 
                //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 
                myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
                myResponseStream = myHttpWebResponse.GetResponseStream();
                myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
                outdata = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                Console.WriteLine(outdata);
                //再次显示"登录" 
                //如果把*行注释调,就显示"没有登录" 
            }
      

  3.   

    上面的方法可以获取网页返回的cookies,然后再提交,如何将存在本机电脑中cookies文件中的cookies解析出来并一同提交?
      

  4.   

    就只要最后一步:  //解析到了Cookie,再进行请求
                myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                myHttpWebRequest.CookieContainer = myCookieContainer;//*解析到的CookieContainer 
                myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
                myResponseStream = myHttpWebResponse.GetResponseStream();
                myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
                outdata = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                Console.WriteLine(outdata);
      

  5.   

    cookie是存在浏览器里的
    模拟登陆不能操作cookie吧
      

  6.   

    但有好几款Winform软件都能解析本机Cookie