日期:2014-05-19  浏览次数:21173 次

HttpWebRequest和WebBrowser的cookie
HttpWebRequest和控件WebBrowser共用同一个cookie.

也就是说如何将WebBrowser的cookie信息传给HttpWebRequest.

------解决方案--------------------
这是我以前做过的东西
先建一个 "CookieContainer " 把WebBrowser中的Cookie保存在里面

//在WebBrowser中登录 cookie保存在 WebBrowser.Document.Cookie中

CookieContainer myCookieContainer = new CookieContainer();


//String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
string cookieStr = webBrowser1.Document.Cookie;
string[] cookstr = cookieStr.Split( '; ');
foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split( '= ');
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
ck.Domain = "www.abc.com ";//必须写对
myCookieContainer.Add(ck);
}


HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create( "http://www.abc.com/search.asp ");
hreq.Method = "POST ";
hreq.ContentType = "application/x-www-form-urlencoded ";

//自己创建的CookieContainer
hreq.CookieContainer = myCookieContainer;

string postdata = "id=2005&action=search&name= ";
byte[] byte1 = Encoding.ASCII.GetBytes(postdata);
hreq.ContentLength = byte1.Length;

Stream poststream = hreq.GetRequestStream();
poststream.Write(byte1, 0, byte1.Length);
poststream.Close();

HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse();