抓出设置C#的WebBrowser控件Cookie失败的元凶
2014-01-05 09:47
357 查看
最近在以小米选购为案例来进行模拟登录,用到设置C#的WebBrowser控件Cookie达到访问选择小米手机版本的目的,如下图:
以为导入wininet.dll
这里再加个设置Cookie的函数
就可以收工了呢,
不成想,前有拦路虎。
死活折腾都是这个效果,如下图:
绝望之际,想到了在用VS2010逐过程调试的时候,发现Cookie中有的Domain值开头就是点,比如.xiaomi.com,这样肯定就不行了。写个函数把点去掉得了。
调用它:
这样就能在选择小米手机版本页面登录成功了。
以为导入wininet.dll
/// <summary> /// 引用wininet.dll + 定义InternetSetCookie /// </summary> /// <param name="lpszUrlName">需要设置Cookie的URL</param> /// <param name="lbszCookieName">Cookie名称</param> /// <param name="lpszCookieData">Cookie数据</param> /// <returns>设置Cookie是否成功</returns> [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
这里再加个设置Cookie的函数
public bool SetCookie(CookieCollection ccAll) { foreach (Cookie cookie in ccAll) { InternetSetCookie( "http://" + cookie.Domain.ToString(), cookie.Name.ToString(), cookie.Value.ToString() + ";expires=Sun,22-Feb-2099 00:00:00 GMT"); } return true; }
就可以收工了呢,
不成想,前有拦路虎。
死活折腾都是这个效果,如下图:
绝望之际,想到了在用VS2010逐过程调试的时候,发现Cookie中有的Domain值开头就是点,比如.xiaomi.com,这样肯定就不行了。写个函数把点去掉得了。
public static string RemoveDot(string dotString) { if (dotString.StartsWith(".")) { dotString = dotString.Substring(1, dotString.Length - 1); } return dotString; }
调用它:
public bool SetCookie(CookieCollection ccAll) { foreach (Cookie cookie in ccAll) { InternetSetCookie( "http://" + RemoveDot(cookie.Domain.ToString()), cookie.Name.ToString(), cookie.Value.ToString() + ";expires=Sun,22-Feb-2099 00:00:00 GMT"); } return true; }
这样就能在选择小米手机版本页面登录成功了。
相关文章推荐
- 完美解决C#Webbrowser控件设置Cookie问题
- 完美解决C#Webbrowser控件设置Cookie问题
- 如何在C# WinForm 程序中使用WebBrowser控件时设置COOKIE的值。
- C#:WebBrowser控件设置代理IP访问网站【附源码】
- 如何使用WebBrowser控件打印格式化的XML文档,并以编程方式任意设置打印方向(C#完整示例)
- C#通过webbrowser控件与javascript交互
- WebBrowser控件——设置滚动条位置
- C#学习笔记:控件的Location属性值的设置与获取
- C#使用 webBrowser 控件模拟点击链接
- C# webBrowser控件使用心得
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- C# 批量设置ComboBox控件的当前选中项的一种方法
- C# WebBrowser 设置代理完全解决方案
- WebBrowser控件的高级用法,c#和Javascript交互及光标位置恢复<转>
- C#中的WebBrowser控件的使用
- WebBrowser设置Cookie
- [转:IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
- WPF 设置WebBrowser控件不弹脚本错误提示框
- C#中WebBrowser控件的版本问题
- C#递归遍历窗体所有textbox控件并设置textbox事件的方法