zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    WordPress后台添加侧边栏菜单
    Redis 使用多个数据库及密码配置
    datatable 修改点击列头进行排序顺序
    命令行客户端操作pg数据库常用操作
    pg 创建自增id
    让 PHP COOKIE 立即生效(不用刷新就可以使用)
    js cookie
    使用mysql监视器即命令行下的mysql
    javascript 获取键盘上的按键代码KeyCode
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
  • 原文地址:https://www.cnblogs.com/augustuss/p/12784280.html
Copyright © 2011-2022 走看看