標籤:
首先,申明兩個API
/// <summary> /// 設定 cookie /// </summary> /// <param name="lpszUrlName"></param> /// <param name="lbszCookieName"></param> /// <param name="lpszCookieData"></param> /// <returns></returns> [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData); /// <summary> /// 擷取cookie /// </summary> /// <param name="url"></param> /// <param name="name"></param> /// <param name="data"></param> /// <param name="dataSize"></param> /// <returns></returns> [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetGetCookie(string url, string name, StringBuilder data, ref int dataSize);
不用過多的解釋,一個讀,一個寫
如果實現過 httprequest , 那麼手頭一定已經有了cookie了。
此時可以直接使用了
private void OpenWeb() { //開啟瀏覽器查看 //產生新的 foreach (System.Net.Cookie i in cookie.GetCookies(new Uri("主機的cookie地址,比如http://192.168.9.200"))) { var b = InternetSetCookie("http://" + i.Domain, null, i.Name + "=" + i.Value + ";path=" + i.Path + ";expires=" + DateTime.Now.AddMinutes(10).GetDateTimeFormats(‘r‘)[0].ToString() + ";");//這裡一定要用r格式,否則不識別 } //啟動瀏覽器 System.Diagnostics.Process.Start("iexplore.exe", "要開啟的url"); }
此種方法實用於類比登入後實現自動登入,特別是網站伺服器不屬於項目開發範圍內的,如果是在開發範圍內的,建議使用類似QQ空間的登入方式,直接向伺服器提交地址,在地址後附帶校正身份的參數,伺服器直接允許登入。
此種方法,對於cookie有效,對於session未測試。
c# winform啟動瀏覽器,實現自動登入