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

时间:2022-05-24 17:44:56

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方法。