原来的代码:
public void SetCookies(string Url, string CookieName, string CookieValue)
{
HttpWebRequest HttpWreq = (HttpWebRequest)WebRequest.Create(Url);
HttpWreq.KeepAlive = false;
HttpWreq.Method = "Post";
HttpWreq.CookieContainer = new CookieContainer();
Cookie Cookies = new Cookie();
Cookies.Name = CookieName;
Cookies.Value = CookieValue;
Cookies.Expires = DateTime.Now.AddHours(1);
Cookies.Domain = new Uri(Url).Host;
HttpWreq.CookieContainer.Add(Cookies);
HttpWebResponse HttpWresp = (HttpWebResponse)HttpWreq.GetResponse();
HttpWresp.Close();
}在这里我却无法真的生成COOKIES.
想要的结果是:
当WINFORM的一个登录框登录时,同时生成此WINFORM中的嵌入的WEBBROW所调用的网站的COOKIES,以便用户不用再次登录,而是直接登录WINFORM的登录窗口直接登录到网站.
希望给出适当的原代码,谢谢!
public void SetCookies(string Url, string CookieName, string CookieValue)
{
HttpWebRequest HttpWreq = (HttpWebRequest)WebRequest.Create(Url);
HttpWreq.KeepAlive = false;
HttpWreq.Method = "Post";
HttpWreq.CookieContainer = new CookieContainer();
Cookie Cookies = new Cookie();
Cookies.Name = CookieName;
Cookies.Value = CookieValue;
Cookies.Expires = DateTime.Now.AddHours(1);
Cookies.Domain = new Uri(Url).Host;
HttpWreq.CookieContainer.Add(Cookies);
HttpWebResponse HttpWresp = (HttpWebResponse)HttpWreq.GetResponse();
HttpWresp.Close();
}在这里我却无法真的生成COOKIES.
想要的结果是:
当WINFORM的一个登录框登录时,同时生成此WINFORM中的嵌入的WEBBROW所调用的网站的COOKIES,以便用户不用再次登录,而是直接登录WINFORM的登录窗口直接登录到网站.
希望给出适当的原代码,谢谢!
{
FileStream fs = new FileStream("log.txt", FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(DateTime.Now.ToShortDateString() + ":" + e.uRL.ToString());
sw.Close();
fs.Close();
}
如果是,可以直接从WebBrowser获取Cookie
如果不是使用WebBrowser登陆,是使用IE啊或者Post登陆的话,可以试试下面的方法[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size); private void button1_Click(object sender, EventArgs e)
{
int iSize = 1000;
StringBuilder strCookie = new StringBuilder(iSize);
InternetGetCookie("http://community.csdn.net/", null, strCookie, ref iSize);
MessageBox.Show(strCookie.ToString());
}
1:Cookie实际上是有失效的时间的,如果你不更新这个Cookies,一段时间后仍然失效。
2:有一些网站的Cookies如果用特定的算法或内容,或者Cookie保存了其它信息你没有能够及时更新,反而会影响用户的体验。我想如果你不是打算写Cookies或者类似跨站攻击之类的软件的话,就把这个功能留给ASP.NET来做吧。
简单的说,第一次登录是通过WINFORM的登录窗口登录的,也就是不去考虑WEBBROW的存,但是在知道已有网址的情况下,对这个网址在本机内生成COOKIES,而当软件在登录后,当打开WEBBROW时,WEBBROW的URL的域名就是生成COOKIE的这个域名,但是就是如何针对这个网址来在WINFORM下生成COOKIE