【懂Cookies护持的老鸟请进】——话说HttpWebRequest,HttpWebResponse中怎样梅开二度,再续前缘
【懂Cookies保持的老鸟请进】——话说HttpWebRequest,HttpWebResponse中怎样梅开二度,再续前缘。
在WinFrom的HttpWebRequest或Respone中,
可以利用: CookieContainer 来保存Cookie,让后续的页面继续使用保存下来的Cookie,如:
当访问其他页面时,只要再调用
处理一下就好了。
但上面的前提是:在同一个线程中执行完毕,如点击一次按钮可以连续访问了多个不同页面(如登录后才能见到的页面)
-----------------------------------------------------------------
现在的疑惑是,如果我的另一个控件的单击事件也要继续使用之前的Cookie,这时要怎样调用呢?直接再使用的话,由于和之前的线程已经不同了,内存中的Cookis也变为空了。。
我现在的思路是:
在上面的操作时,把Cookie以字符串的形式保存为硬数据(即生成到文本文件等),当要再次使用时,再次读取那文本文件。
但这样做的效率不是很低么?
那些Winfom版本的什么抢票助手,暴力破解的东西是怎样保存Cookie的呢?
--------------------------------------------------------------------------------
请有经验的朋友来谈一谈,说一说,留下你们宝贵的意见与建议!谢谢!
------解决方案--------------------
我来抛个砖。
最简单的,用static 共享CookieContainer
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
在WinFrom的HttpWebRequest或Respone中,
可以利用: CookieContainer 来保存Cookie,让后续的页面继续使用保存下来的Cookie,如:
/// <summary>
/// 解析Cookie
/// </summary>
/// <param name="response"></param>
private void ParseCookie(HttpWebResponse response)
{
if (!IgnoreCookies)
{
string cookiesExpression = response.Headers["Set-Cookie"];
if (!string.IsNullOrEmpty(cookiesExpression))
{
Uri cookieUrl = new Uri(string.Format("{0}://{1}:{2}/",
response.ResponseUri.Scheme,
response.ResponseUri.Host,
response.ResponseUri.Port));
_cookieContainer.SetCookies(cookieUrl, cookiesExpression);
}
}
}
当访问其他页面时,只要再调用
/// <summary>
/// 配置请求设置
/// </summary>
/// <param name="request"></param>
private void ConfigRequest(HttpWebRequest request)
{
request.UserAgent = UserAgent;
request.Referer= "";
request.CookieContainer = _cookieContainer;
request.AllowAutoRedirect =AllowAutoRedirect;
request.MediaType = "text/html";
request.Headers["Accept-Language"] = "zh-CN,zh;q=0.8";
if (Timeout > 0)
request.Timeout = Timeout;
}
处理一下就好了。
但上面的前提是:在同一个线程中执行完毕,如点击一次按钮可以连续访问了多个不同页面(如登录后才能见到的页面)
-----------------------------------------------------------------
现在的疑惑是,如果我的另一个控件的单击事件也要继续使用之前的Cookie,这时要怎样调用呢?直接再使用的话,由于和之前的线程已经不同了,内存中的Cookis也变为空了。。
我现在的思路是:
在上面的操作时,把Cookie以字符串的形式保存为硬数据(即生成到文本文件等),当要再次使用时,再次读取那文本文件。
但这样做的效率不是很低么?
那些Winfom版本的什么抢票助手,暴力破解的东西是怎样保存Cookie的呢?
--------------------------------------------------------------------------------
请有经验的朋友来谈一谈,说一说,留下你们宝贵的意见与建议!谢谢!
------解决方案--------------------
我来抛个砖。
最简单的,用static 共享CookieContainer
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/