我用WebBrowser登录后,获得了下面的cookie字符,要把他们绑定到HttpWebRequest:
Dvbbs=cidefjijd; ASPSESSIONIDQQSBSDCT=PKAEFOABKNFIDPHBBCABHNGC; DvForum=UserID=279247&usercookies=3&StatUserID=6153393836&userclass=%C8%FD%B5%C8%B1%F8&username=oldhunter&password=4Q274W8JJE425kze&userhidden=2; cnzz02=56; rtime=2; ltime=1162500948703; cnzz_eid=44812845-http%3A//www.chinaz.com/我用CookieContainer绑定时,发现下面的这部分没有绑定上,这种情况怎么办? 
DvForum=UserID=279247&usercookies=3&StatUserID=6153393836&userclass=%C8%FD%B5%C8%B1%F8&username=oldhunter&password=4Q274W8JJE425kze&userhidden=2; 每一个&号分开的都一个值吗?那还有DvForum=UserID=279247怎么绑定?
附现用的代码:
//
// this.Cookie 是用WebBrowser得到的cookie字符串,request是HttpWebRequest
//
request.CookieContainer = new CookieContainer();
string host = Regex.Match(url, @"(?<=http://)[\w\.]+[^/]").Value;
string[] cookies = this.Cookie.Split(new char[]{';'});
foreach (string c in cookies)
{
string[] cookie = c.Split(new char[]{'='});
if (cookie.Length == 2)
{
request.CookieContainer.Add( new Cookie(cookie[0].Trim(), cookie[1].Trim(), "/", host) );
}
}

解决方案 »

  1.   

    用&分开(Split("&");)每个然后用CookieContainer加上去就行了阿...
      

  2.   

    我的代码:
    private CookieCollection GetCookiesFromString(string cookieStr, string host)
    {
        CookieCollection cookies = new CookieCollection();
        //
        // cookie sample: Dvbbs=cidefjijd; ASPSESSIONIDQQSBSDCT=PKAEFOABKNFIDPHBBCABHNGC; DvForum=UserID=279247&usercookies=3&StatUserID=6153393836&userclass=%C8%FD%B5%C8%B1%F8&username=oldhunter&password=4Q274W8JJE425kze&userhidden=2; cnzz02=56; rtime=2; ltime=1162500948703; cnzz_eid=44812845-http%3A//www.chinaz.com/
        //
        string[] cookieStrings = cookieStr.Split(new char[] { ';' });
        foreach (string c in cookieStrings)
        {
            string[] parameters = c.Split(new char[] { '&' });
            foreach (string p in parameters)
            {
                string[] parts = p.Split(new char[] { '=' });
                if (parts.Length == 2)
                {
                    cookies.Add(new Cookie(parts[0].Trim(), parts[1].Trim(), "/", host));
                }
                else
                {
                    for (int i = 0; i < parts.Length - 1; i++)
                    {
                        cookies.Add(new Cookie(parts[i].Trim(), parts[parts.Length - 1].Trim(), "/", host));
                    }
                }
            }
        }    return cookies;
    }浏览器的cookie:
    Dvbbs=cidefjijd; ASPSESSIONIDQQSBSDCT=PKAEFOABKNFIDPHBBCABHNGC; DvForum=UserID=279247&usercookies=3&StatUserID=6153393836&userclass=%C8%FD%B5%C8%B1%F8&username=oldhunter&password=4Q274W8JJE425kze&userhidden=2; cnzz02=56; rtime=2; ltime=1162500948703; cnzz_eid=44812845-http%3A//www.chinaz.com/我绑定后的cookie: DvForum=279247; UserID=279247; usercookies=3; StatUserID=6153393836; userclass=%C8%FD%B5%C8%B1%F8; username=oldhunter; password=4Q274W8JJE425kze; userhidden=2; cnzz02=58; rtime=2; ltime=1162502647953; cnzz_eid=44812845-http%3A//www.chinaz.com/; ASPSESSIONIDQQSBSDCT=GEBGFOABPLCBFCMDIFMNPDPN
    Connection: Keep-Alive把从浏览器得到的cookie串绑定到HttpWebRequest后还是不一样,怎么才能让HttpWebRequest的Cookie和浏览器的一样?