• 【C#】获取本地Cookie的问题


    using System; 
    using System.Net; 
    using System.IO; 
    using System.Text; 


    // 
    // 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); 
    //再次显示"登录" 
    //如果把*行注释调,就显示"没有登录" 

    发表于:2008-06-13 00:36:403楼 得分:30
    本地已 经有的cookies 
    在3.0以下平台:使用api 
    [DllImport("wininet.dll", SetLastError=true)] 
    public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size); 
    在3.0以上平台可以使用 
    System.Windows.Application.GetCookie方法。
  • 相关阅读:
    WindowsService 安装后报错: 无法启动计算机“.”上的服务 解决方案
    Windows 服务入门指南
    STM32学习及应用笔记二:一次运算符优先级造成的错误
    STM32F412应用开发笔记之十:多组分气体分析仪设计验证
    OneNET麒麟座应用开发之七:控制采样电机
    OneNET麒麟座应用开发之六:与气体质量流量控制器通讯
    OneNET麒麟座应用开发之五:获取加速度传感器ADXL345数据
    STM32应用实例十:简析STM32 I2C通讯死锁问题
    OneNET麒麟座应用开发之四:数据上传测试
    OneNET麒麟座应用开发之三:获取温湿度数据
  • 原文地址:https://www.cnblogs.com/ssk-bak/p/4881397.html
Copyright © 2020-2023  润新知