首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 【C#】获取本地Cookie的问题 [已结贴,结贴人:fox_sky]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fox_sky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-29 12:28:35 楼主
    现在我想要实现一个效果,我现在自己用HttpWebRequest类,向服务器访问,这个类里面有一个CookieContainer,如何获取本地已经有的Cookie放进去?
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yilanwuyu123
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-29 12:43:261楼 得分:0
    关注一下 没接触过这方面的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xocom
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-12 23:22:152楼 得分:10
    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);   
                //再次显示"登录"
                //如果把*行注释调,就显示"没有登录"
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzultc
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于: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方法。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dyjqk
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-13 08:53:124楼 得分:10
    [DllImport("wininet.dll", SetLastError=true)]
        public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size);
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved