一般使用.NET C#发起一个web请求是用WebClient类,应为使用很简单,但是每调用一次
OpenRead就会在服务器启用一个新Session
使用HttpWebRequest + CookieContainer就可以让多个web请求只有一个session
为HttpWebRequest 指定一个CookieContainer,使用同一个CookieContainer的Request就是一个session
代码如下:
CookieContainer cc = new CookieContainer(); for(int i=0;i<100;i++) { HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://localhost/AspxApp/MainForm.aspx"); myReq.CookieContainer = cc; HttpWebResponse resp = myReq.GetResponse() as HttpWebResponse; Stream s = resp.GetResponseStream(); StreamReader sr = new StreamReader(s); String text = sr.ReadToEnd(); sr.Close(); s.Close(); }AspxApp这个程序返回的内容就是SessionId,这100个请求SessionId是相同的
打印 | 张贴于 2004-10-10 14:50:00 | Tag:随便聊聊
留言反馈
现在我想把这个cookie发出去,可是因为取得的是个string,而CookieContainer却是个 CookieContainer
这样怎么转换啊???
但是cookie一直是变化的,我想,应该每次请求都应该把上次请求返回的cookie发送。等我测试一下。
httpxml
webclient
webrequest/webresponse
tcp/udp
sockets
不同层次的运用
myReq.CookieContainer = cc;
我一时还不能明白,可否解释一下?我原来处理Cookie是自己一步一步来的。您这样处理Cookie的方法对于如下这些情况可否适用?
1 cc更新的时候。比如第一个页面返回两个Cookie name=yyy和Sax=1
第二个页面返回两个Cookie name=zzz和age=99
这样以后CC的内容是什么呢?
是否是name=zzz,sax=1,age=99 ????
另外对于一些特殊的Http头中返回的Cookie会正常处理么?比如有些服务器返回的Set-Cookie: XXX有两个,即:
Set-Cookie: xxxxx
Set-Cookie: yyyyy
我用普通的方法只能得到第一个。着急中。。
,按理说应该一个浏览器实例一个session,但是多窗口似乎也只是一个session,即使你浏览不同的内容
Stream s = resp.GetResponseStream();
StreamReader sr = new StreamReader(s);
String text = sr.ReadToEnd();
sr.Close();
这些就没必要。只要简单的发送一个请求即可。
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.UserAgent = "MSIE6.0";
req.Method = "GET";
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
rvl = res.StatusCode;
res.Close();