完美解决C#Webbrowser控件设置Cookie问题
来源:互联网 发布:淘宝联盟返利靠谱吗 编辑:程序博客网 时间:2024/06/15 16:25
完美解决C#Webbrowser控件设置Cookie问题
由于个人项目需求,需要把从抓包里面的Cookie数据写入到webbrowser空控件里,经过百度白百般折腾,结果还是失败,搜索到的答案基本上都是
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);InternetSetCookie(url, "cookieName", "cookieValue");// navigatewebBrowser.Navigate(url);
方法本身没错,只是讲的不够详细,而且我是需要设置好几个Cookie键值对。需要用到循环遍历。首先贴下我的详细代码:
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);private void test(){ string cookie = "name=小明; age=19;phone=13013139876"//需要设置到Webbrowser的Cookie信息 string url = "http://192.168.1.12/data/2016/student.htm";//访问地址 string domain = "/data/2016";//目标主机域名 foreach (string c in cookie.Split(';')) { string[] item = c.Split('='); if (item.Length == 2) { InternetSetCookie(url, null, new Cookie(HttpUtility.UrlEncode(item[0]).Replace("+", ""), HttpUtility.UrlEncode(item[1]), "; expires = Session GMT", "/").ToString()); } } webBrowser1.Navigate(url);}
要注意上面的代码.Replace(“+”, “”),我被这个困惑了半天,导致Cookie只有第一个字段name设置成功,后面的age,phone字段都没设置成功,通过抓包分析,发现设置后的Cookie字段前面多了个”+”号,都说细节决定成败,确实如此。这个”+”号应该是HttpUtility.UrlEncode()编码后导致的,但是如果你不进行HttpUtility.UrlEncode()编码是绝对不行的,所以我们只好通过.Replace(“+”, “”)过滤掉”+”号,至此Cookie已经完美设置成功。
还有就是百度不能解决问题的时候,我们要多多Google。
还有就是可能你手动设置Cookie的过程中由于传参错误或其他原因导致webbrowser打开url提示错误500之类的,这时候需要手动打开电脑的IE浏览器,然后清除缓存记录Cookie等。就可以正常打开url了。
1 1
- 完美解决C#Webbrowser控件设置Cookie问题
- WebBrowser设置Cookie
- WebBrowser设置Cookie
- c# webbrowser 设置cookie
- WPF中使用WebBrowser控件的刷新问题[已解决]
- WebBrowser控件的问题
- webBrowser 控件 消息问题?
- 关于WMobile中WebBrowser控件存在的问题(C#)
- WebBrowser 控件设计模式设置
- 完美解决C# DataGridView控件显示不同表的问题
- GridView 控件无法居中问题的完美解决
- 从WebBrowser中取得Cookie 和 HttpWebRequest设置cookie!
- C#webbrowser设置缩放比例
- 解决wp7 WebBrowser 乱码问题
- WebBrowser.DocumentText的设置问题
- vb.net webbrowser控件 设置代理IP,webbrowser 代理IP
- 解决WebBrowser控件打开本地页面报安全提示的问题
- 解决WebBrowser控件打开本地页面报安全提示的问题
- CISCO 零日漏洞 CVE-2016-6415,由NSA方程组泄露档案中探得
- vim 技巧备忘
- KVC和KVO
- 异常总结
- 数据结构之树与二叉树
- 完美解决C#Webbrowser控件设置Cookie问题
- 第四周项目1-建立单链表
- C#入门经典第6版学习 十三
- iOS如何获取iOS应用中所有图片资源
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- 意外——窥视到朝鲜互联网基础设施
- 关于C++ 里struct 和 class的区别
- Maven变量及常见插件配置详解
- Android adb使用