积极答复者
向webBrowser写入cookie的问题

问题
-
先在向webBrowser登录打开http://tieba.baidu.com/f?kw=%CE%F7%B1%B1&frs=yqtb
然后通过wb.Document.Cookie获取到cookie字符串
然后退出登录
然后写入cookie
[DllImport("wininet.dll", CharSet = CharSet.Ansi)] public static extern bool InternetSetCookie(string url, string name, string data); public static void SetCookie(string url, string data) { string[] cookies = data.Split(';'); foreach (string cookie in cookies) { string[] fieldvalue = cookie.Split('='); InternetSetCookie(url, fieldvalue[0], fieldvalue[1] + ";expires=Sun,22-Feb-2099 00:00:00 GMT"); } } SetCookie
SetCookie("baidu.com", "...");
然后在webBrowser中打开http://tieba.baidu.com/f?kw=%CE%F7%B1%B1&frs=yqtb
为非登录状态... 请问哪出错 了,怎么样才能得到想要的效果
- 已编辑 12vd7 2012年7月9日 1:43
答案
全部回复
-
Hi 12vd7,
你获取Cookie和设置Cookie都执行正确而且数据都成功保存在想要的变量了吗!你尝试下下面这个声明,然后看看InternetSetCookie 调用的返回数值是否为零!
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)] private static extern bool InternetSetCookie (string url, string name, string data);
希望你的问题能够及早解决。Jason Wang [MSFT]
MSDN Community Support | Feedback to us
-
Hi 12vd7,
你获取Cookie和设置Cookie都执行正确而且数据都成功保存在想要的变量了吗!你尝试下下面这个声明,然后看看InternetSetCookie 调用的返回数值是否为零!
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)] private static extern bool InternetSetCookie (string url, string name, string data);
希望你的问题能够及早解决。
Jason Wang [MSFT]
MSDN Community Support | Feedback to us
-
Hi 12vd7,
你获取Cookie和设置Cookie都执行正确而且数据都成功保存在想要的变量了吗!你尝试下下面这个声明,然后看看InternetSetCookie 调用的返回数值是否为零!
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)] private static extern bool InternetSetCookie (string url, string name, string data);
希望你的问题能够及早解决。
Jason Wang [MSFT]
返回false
MSDN Community Support | Feedback to us
-
Hi 12vd7,
你获取Cookie和设置Cookie都执行正确而且数据都成功保存在想要的变量了吗!你尝试下下面这个声明,然后看看InternetSetCookie 调用的返回数值是否为零!
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)] private static extern bool InternetSetCookie (string url, string name, string data);
希望你的问题能够及早解决。
Jason Wang [MSFT]
返回false
MSDN Community Support | Feedback to us
-
Hi 12vd7,
你获取Cookie和设置Cookie都执行正确而且数据都成功保存在想要的变量了吗!你尝试下下面这个声明,然后看看InternetSetCookie 调用的返回数值是否为零!
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)] private static extern bool InternetSetCookie (string url, string name, string data);
希望你的问题能够及早解决。
Jason Wang [MSFT]
返回false
MSDN Community Support | Feedback to us
[DllImport("kernel32.dll")]
private static extern int GetLastError();(0)-操作成功完成。
-
你能贴出你的代码么?我觉得可能需要debug一下才好知道答案。
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool InternetSetCookie(string url, string name, string data); [DllImport("kernel32.dll")] private static extern int GetLastError(); public void SetCookie(string url, string data) { //int index = 0; //while ((index = data.IndexOf(",", index)) > 0) //{ // index++; // if (data[index] != ' ') { data = data.Insert(index, ","); index++; } //} //string[] cs = data.Split(new string[] { ",," }, StringSplitOptions.RemoveEmptyEntries); //foreach (string c in cs) //{ // int i = c.IndexOf("="); // InternetSetCookie(url, c.Substring(0, i), c.Substring(i + 1) + ";expires=Thu, 01-Jan-2020 00:00:01 GMT"); //} string[] cookies = data.Split(';'); foreach (string cookie in cookies) { string[] fieldvalue = cookie.Split('='); bool b= InternetSetCookie(url, fieldvalue[0], fieldvalue[1] + ";expires=Sun,22-Feb-2099 00:00:00 GMT"); tb.Text += "--" + b.ToString() + "|" + fieldvalue[0] + "|" + fieldvalue[1] + "|" + GetLastError(); } }
SetCookie("passport.baidu.com", "BAIDUID=872F83485E3D971D3E4CCF6AD41B03FE:");
就这样
-
我试的结果是GetLastError() == 12006。(BAIDUID更换成我收到的ID了),可能别的地方不同吧。
---------------------------
---------------------------
--False|BAIDUID|8BCDDB86455A8865D902274C979FDBF5:|12006
---------------------------
OK
---------------------------我收到的Cookie如下:
TIEBAUID=c061bb2c941c3fea75c43dad; TIEBA_USERTYPE=7b00a4229d6d32581a92708d; TIEBA_LOGINED_USER=_%2525E6%252596%2525B0%2525E7%252594%25259F%2525E4%2525BB%2525A3; NO_UNAME=1; BAIDUID=8BCDDB86455A8865D902274C979FDBF5:FG=1
你比较一下,看看有区别么?
-
我试的结果是GetLastError() == 12006。(BAIDUID更换成我收到的ID了),可能别的地方不同吧。
---------------------------
---------------------------
--False|BAIDUID|8BCDDB86455A8865D902274C979FDBF5:|12006
---------------------------
OK
---------------------------我收到的Cookie如下:
TIEBAUID=c061bb2c941c3fea75c43dad; TIEBA_USERTYPE=7b00a4229d6d32581a92708d; TIEBA_LOGINED_USER=_%2525E6%252596%2525B0%2525E7%252594%25259F%2525E4%2525BB%2525A3; NO_UNAME=1; BAIDUID=8BCDDB86455A8865D902274C979FDBF5:FG=1
你比较一下,看看有区别么?
1200612006是什么错误,网上查不到.你测试能显示登录状态吗
-
请问用这样OK吗?
SetCookie("http://passport.baidu.com", "BAIDUID=872F83485E3D971D3E4CCF6AD41B03FE:");
http://www.cnblogs.com/huqingyu/archive/2008/11/27/1342256.html
不過,它會轉址到 https://passport.baidu.com/?login
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/- 已编辑 亂馬客 2012年7月12日 4:47
-
请问用这样OK吗?
SetCookie("http:passport.baidu.com", "BAIDUID=872F83485E3D971D3E4CCF6AD41B03FE:");
http://www.cnblogs.com/huqingyu/archive/2008/11/27/1342256.html
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/效果一样
-
发现他会转址到 https://passport.baidu.com/?login
刚才试了一下,return是true!
SetCookie("https://passport.baidu.com/?login", "BAIDUID=872F83485E3D971D3E4CCF6AD41B03FE:");
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
哦,是true了,可登录状态还是未登录