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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM