首先,申明两个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未测试。
时间: 2024-11-09 00:51:54