ibcadmin 发表于 2019-12-26 09:03:32

WinForm WebBrowser 设置cookie


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).Replace("+", ""), HttpUtility.UrlEncode(item), "; expires = Session GMT", "/").ToString());
                }
            }
            webBrowser1.Navigate(url);
}

<br />

<p>要留意上面的代码.Replace(“+”, “”),我被这个狐疑了半天,导致Cookie只有第一个字段name设置乐成,反面的age,phone字段都没设置乐成,通过抓包分析,发现设置后的Cookie字段前面多了个”+”号,都说细节决定成败,确实云云。这个”+”号应该是HttpUtility.UrlEncode()编码后导致的,但是如果你不举行HttpUtility.UrlEncode()编码是绝对不可的,以是我们只好通过.Replace(“+”, “”)过滤掉”+”号,至此Cookie已经完美设置乐成。<br /><br />另有就是大概你手动设置Cookie的过程中由于传参错误或其他缘故起因导致webbrowser打开url提示错误500之类的,这时间必要手动打开电脑的IE欣赏器,然后扫除缓存记载Cookie等。就可以正常打开url了。<br /><br /></p>
<br /><br /><br />原文链接:https://blog.csdn.net/hangom/article/details/52619394
页: [1]
查看完整版本: WinForm WebBrowser 设置cookie