(论坛答疑点滴)如果向某网址Post信息,并得到CookieContainer以

80酷酷网    80kuku.com

  cookieusing System; 
using System.Net; 
using System.IO; 
using System.Text;         [STAThread] 
        static void Main(string[] args) 
        { 
            // 
            // TODO: 在此处添加代码以启动应用程序 
            // 
            string url="http://localhost/csdn2/1.asp"; 
//            <% 
//            if request("aa")="zhuye" then session("ok")="ok" 
//            if session("ok")="ok" then 
//            response.write("登录") 
//            else 
//            response.write("没有登录") 
//            end if 
//            %> 
            string indata="aa=zhuye"; 
            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.CookieContainer=myCookieContainer; 
            //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 
            Stream myRequestStream=myHttpWebRequest.GetRequestStream(); 
            StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));                 
            myStreamWriter.Write(indata); 
            //把数据写入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);     
            //再次显示"登录" 
            //如果把*行注释调,就显示"没有登录" 
        } 

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: