http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.cookiecontainer(VS.85).aspx

解决方案 »

  1.   


            /// <summary>
            /// 向指定页面内容发送数据(POST)
             /// </summary>
            /// <param name="SourcePage">请求页面</param>
            /// <returns></returns>
            public bool PostPage(WebPage SourcePage)
            {
                HttpWebRequest myHttpWebRequest = null;
                HttpWebResponse response = null;
                if (Uri.IsWellFormedUriString(SourcePage.InitUrl, UriKind.Absolute))
                {
                    myHttpWebRequest = (HttpWebRequest)WebRequest.Create(SourcePage.InitUrl);
                }
                else
                {
                    SourcePage.Content = "";
                    return false;
                }            try
                {
                    myHttpWebRequest.AllowAutoRedirect = true;
                    myHttpWebRequest.KeepAlive = true;
                    myHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*";
                    myHttpWebRequest.Referer = SourcePage.ReferUrl;                myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)";
                    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
                    myHttpWebRequest.Method = "POST";                if (string.IsNullOrEmpty(SourcePage.LoginCookie))
                    {
                        myHttpWebRequest.Headers.Add("cookie:" + SourcePage.CookieHeader);
                    }
                    else
                    {
                        myHttpWebRequest.Headers.Add("cookie:" + SourcePage.LoginCookie);
                    }                CookieContainer myCookieContainer = new CookieContainer();
                    myHttpWebRequest.CookieContainer = myCookieContainer;                Stream MyRequestStrearm = myHttpWebRequest.GetRequestStream();
                    StreamWriter MyStreamWriter = new StreamWriter(MyRequestStrearm, Encoding.ASCII);                //把数据写入HttpWebRequest的Request流
                    MyStreamWriter.Write(SourcePage.PostData);                //关闭打开对象 
                    MyStreamWriter.Close();
                    MyRequestStrearm.Close();                response = (HttpWebResponse)myHttpWebRequest.GetResponse();                //更新当前页面地址
                    SourcePage.CurrentUrl = response.ResponseUri.AbsoluteUri;                //更新当前cookie信息
                    SourcePage.CookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(new Uri(SourcePage.CurrentUrl));                if (SourcePage.IsReadContent)
                    {
                        System.IO.StreamReader sr = null;
                        sr = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding(SourcePage.EncodingCode));    //utf-8
                        SourcePage.Content = StringUtility.ClearBlankTag(sr.ReadToEnd());                    sr.Close();
                    }
                    else
                    {
                        SourcePage.Content = "";
                    }                return true;
                }
                catch(Exception Err)
                {
                    SourcePage.CurrentUrl = "";
                    SourcePage.Content = Err.Message;
                    return false;
                }
                finally
                {
                    if (response != null)
                    {
                        response.Close();
                    }
                }
            }