欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WinForm WebBrowser 设置cookie

程序员文章站 2022-06-14 21:35:26
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCoo ......
[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