打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WinForm WebBrowser 设置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已经完美设置成功。

还有就是可能你手动设置Cookie的过程中由于传参错误或其他原因导致webbrowser打开url提示错误500之类的,这时候需要手动打开电脑的IE浏览器,然后清除缓存记录Cookie等。就可以正常打开url了。




原文链接:https://blog.csdn.net/hangom/article/details/52619394
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
给你个登录需要验证的网页例子:
用webbrowser做的网站登陆程序,如何获取cookie并且保存在程序中 (IE8有效)
mvc存储Cookie和读取Cookie方法
C#编程总结(十)字符转码
URL中包含中文参数造成乱码的解决之道
【精】ASP.NET页面通过URL传递参数(一)(转载)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服