首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

【懂Cookies护持的老鸟请进】——话说HttpWebRequest,HttpWebResponse中怎样梅开二度,再续前缘

2013-10-30 
【懂Cookies保持的老鸟请进】——话说HttpWebRequest,HttpWebResponse中怎样梅开二度,再续前缘。在WinFrom的Htt

【懂Cookies保持的老鸟请进】——话说HttpWebRequest,HttpWebResponse中怎样梅开二度,再续前缘。
在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/

热点排行