读取cookies类如下
public class GetCookie
{ /**/
/// <summary>
/// 通过COM来获取Cookie数据。
/// </summary>
/// <param name="url">当前网址。</param>
/// <param name="cookieName">CookieName.</param>
/// <param name="cookieData">用于保存Cookie Data的<see cref="StringBuilder"/>实例。</param>
/// <param name="size">Cookie大小。</param>
/// <returns>如果成功则返回<c>true</c>,否则返回<c>false</c>。</returns>
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetGetCookie(
string url, string cookieName,
StringBuilder cookieData, ref int size);
/**/
/// <summary>
/// 获取当前<see cref="Uri"/>的<see cref="CookieContainer"/>实例。
/// </summary>
/// <param name="uri">当前<see cref="Uri"/>地址。</param>
/// <returns>当前<see cref="Uri"/>的<see cref="CookieContainer"/>实例。</returns>
public static CookieContainer GetUriCookieContainer(Uri uri)
{
CookieContainer cookies = null; // 定义Cookie数据的大小。
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData,
ref datasize))
{
if (datasize < 0)
return null; // 确信有足够大的空间来容纳Cookie数据。
cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData,
ref datasize))
return null;
}
if (cookieData.Length > 0)
{
cookies = new CookieContainer();
cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
}
return cookies;
}获取cookie
private void MainForm_Load(object sender, EventArgs e)
{
CookieContainer cc = Common.GetCookie.GetUriCookieContainer(new Uri(Common.AppSetting.GetAppStrings("weburl", "")));
if (cc != null)
{
CookieCollection cl = cc.GetCookies(new Uri(Common.AppSetting.GetAppStrings("weburl", "") + "/Manage/default.aspx"));
foreach (Cookie cook in cl)
{
if (cook.Name == "UserCookies")
{
CookieName = cook.Name;
CookieValue = cook.Value;
string path1 = cook.Path;
string domain = cook.Domain;
string expries = cook.Expires.ToString();
}
}
}
}现在读取游览器登陆的cookie是成功的 我现在想实现 在C#读取cookie后保存,然后用保存的这个cookie在次写入游览器的cookie里这样就不用登陆 就可以直接访问页面了。 求解 如何再次写入cookie
public class GetCookie
{ /**/
/// <summary>
/// 通过COM来获取Cookie数据。
/// </summary>
/// <param name="url">当前网址。</param>
/// <param name="cookieName">CookieName.</param>
/// <param name="cookieData">用于保存Cookie Data的<see cref="StringBuilder"/>实例。</param>
/// <param name="size">Cookie大小。</param>
/// <returns>如果成功则返回<c>true</c>,否则返回<c>false</c>。</returns>
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetGetCookie(
string url, string cookieName,
StringBuilder cookieData, ref int size);
/**/
/// <summary>
/// 获取当前<see cref="Uri"/>的<see cref="CookieContainer"/>实例。
/// </summary>
/// <param name="uri">当前<see cref="Uri"/>地址。</param>
/// <returns>当前<see cref="Uri"/>的<see cref="CookieContainer"/>实例。</returns>
public static CookieContainer GetUriCookieContainer(Uri uri)
{
CookieContainer cookies = null; // 定义Cookie数据的大小。
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData,
ref datasize))
{
if (datasize < 0)
return null; // 确信有足够大的空间来容纳Cookie数据。
cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData,
ref datasize))
return null;
}
if (cookieData.Length > 0)
{
cookies = new CookieContainer();
cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
}
return cookies;
}获取cookie
private void MainForm_Load(object sender, EventArgs e)
{
CookieContainer cc = Common.GetCookie.GetUriCookieContainer(new Uri(Common.AppSetting.GetAppStrings("weburl", "")));
if (cc != null)
{
CookieCollection cl = cc.GetCookies(new Uri(Common.AppSetting.GetAppStrings("weburl", "") + "/Manage/default.aspx"));
foreach (Cookie cook in cl)
{
if (cook.Name == "UserCookies")
{
CookieName = cook.Name;
CookieValue = cook.Value;
string path1 = cook.Path;
string domain = cook.Domain;
string expries = cook.Expires.ToString();
}
}
}
}现在读取游览器登陆的cookie是成功的 我现在想实现 在C#读取cookie后保存,然后用保存的这个cookie在次写入游览器的cookie里这样就不用登陆 就可以直接访问页面了。 求解 如何再次写入cookie
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货