zoukankan      html  css  js  c++  java
  • 【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方法。
  • 相关阅读:
    HDU 3829 Cat VS Dog (最大独立集)【二分图匹配】
    POJ 2594 Treasure Exploration (Floyd+最小路径覆盖)
    HDU 1054 Strategic Game (最小点覆盖)【二分图匹配】
    HDU 4185 Oil Skimming 【最大匹配】
    HDU 2389 Rain on your Parade 最大匹配(模板题)【HK算法】
    HDU 1281 棋盘游戏 (枚举+最大匹配)
    HDU 1045 Fire Net 【二分图匹配】
    POJ 1904 King's Quest (强连通分量+完美匹配)
    HDU 4635 Strongly connected (强连通分量+缩点)
    POJ 2631 Roads in the North (模板题)(树的直径)
  • 原文地址:https://www.cnblogs.com/niuniu502/p/1838338.html
Copyright © 2011-2022 走看看