c# 实现网页上用户自动登陆|asp.net 模拟网站登录

来源:互联网 发布:四维星软件官网 编辑:程序博客网 时间:2024/05/21 16:57
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO;namespace Czt.Web {     /// <summary>     /// 实现网站登录类     /// </summary>     public class Post     {         /// <summary>         /// 网站Cookies         /// </summary>         private string _cookieHeader = string.Empty;         public string CookieHeader         {             get             {                 return _cookieHeader;             }             set             {                 _cookieHeader = value;             }         }         /// <summary>         /// 网站编码         /// </summary>         private string _code = string.Empty;         public string Code         {             get { return _code; }             set { _code = value; }         }         private string _pageContent = string.Empty;         public string PageContent         {             get { return _pageContent; }             set { _pageContent = value; }         }        private Dictionary<string, string> _para = new Dictionary<string, string>();         public Dictionary<string, string> Para         {             get { return _para; }             set { _para = value; }         }         /**/         /// <summary>         /// 功能描述:模拟登录页面,提交登录数据进行登录,并记录Header中的cookie         /// </summary>         /// <param name="strURL">登录数据提交的页面地址</param>         /// <param name="strArgs">用户登录数据</param>         /// <param name="strReferer">引用地址</param>         /// <param name="code">网站编码</param>         /// <returns>可以返回页面内容或不返回</returns>         public string PostData(string strURL, string strArgs, string strReferer, string code, string method)         {             return  PostData(strURL,  strArgs,  strReferer,  code,  method, string.Empty);         }         public string PostData(string strURL, string strArgs, string strReferer, string code, string method, string contentType)         {             try             {                 string strResult = "";                 HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);                 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 = strReferer;                 myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)";                if (string.IsNullOrEmpty(contentType))                 {                     myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";                 }                 else                 {                     myHttpWebRequest.ContentType = "contentType";                 }                myHttpWebRequest.Method = method;                myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");                if (myHttpWebRequest.CookieContainer == null)                 {                     myHttpWebRequest.CookieContainer = new CookieContainer();                 }                if (this.CookieHeader.Length > 0)                 {                     myHttpWebRequest.Headers.Add("cookie:" + this.CookieHeader);                     myHttpWebRequest.CookieContainer.SetCookies(new Uri(strURL), this.CookieHeader);                 }                 byte[] postData = Encoding.GetEncoding(code).GetBytes(strArgs);                 myHttpWebRequest.ContentLength = postData.Length;                System.IO.Stream PostStream = myHttpWebRequest.GetRequestStream();                 PostStream.Write(postData, 0, postData.Length);                 PostStream.Close();                HttpWebResponse response = null;                 System.IO.StreamReader sr = null;                 response = (HttpWebResponse)myHttpWebRequest.GetResponse();                 if (myHttpWebRequest.CookieContainer != null)                 {                     this.CookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(new Uri(strURL));                 }                sr = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding(code));    //    //utf-8                 strResult = sr.ReadToEnd();                 sr.Close();                 response.Close();                 return strResult;             }             catch (Exception ex)             {                 Utilities.Document.Create("C:\\error.log", strArgs, true, Encoding.UTF8);             }             return string.Empty;         }        /**/         /// <summary>         /// 功能描述:在PostLogin成功登录后记录下Headers中的cookie,然后获取此网站上其他页面的内容         /// </summary>         /// <param name="strURL">获取网站的某页面的地址</param>         /// <param name="strReferer">引用的地址</param>         /// <returns>返回页面内容</returns>         public string GetPage(string strURL, string strReferer, string code)         {             return GetPage(strURL, strReferer,code,string.Empty);         }         public string GetPage(string strURL, string strReferer,string code,string contentType)         {             string strResult = "";             HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);             myHttpWebRequest.AllowAutoRedirect = true;             myHttpWebRequest.KeepAlive = false;             myHttpWebRequest.Accept = "*/*";             myHttpWebRequest.Referer = strReferer;             myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");            myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)";             if (string.IsNullOrEmpty(contentType))             {                 myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";             }             else             {                 myHttpWebRequest.ContentType = contentType;             }             myHttpWebRequest.Method = "GET";            if (myHttpWebRequest.CookieContainer == null)             {                 myHttpWebRequest.CookieContainer = new CookieContainer();             }            if (this.CookieHeader.Length > 0)             {                 myHttpWebRequest.Headers.Add("cookie:" + this.CookieHeader);                 myHttpWebRequest.CookieContainer.SetCookies(new Uri(strURL), this.CookieHeader);             }             HttpWebResponse response = null;             System.IO.StreamReader sr = null;             response = (HttpWebResponse)myHttpWebRequest.GetResponse();             Stream streamReceive;             string gzip = response.ContentEncoding;            if (string.IsNullOrEmpty(gzip) || gzip.ToLower() != "gzip")             {                 streamReceive = response.GetResponseStream();             }             else             {                 streamReceive = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);             }            sr = new System.IO.StreamReader(streamReceive, Encoding.GetEncoding(code));            if (response.ContentLength > 1)             {                 strResult = sr.ReadToEnd();             }             else             {                 char[] buffer=new char[256];                 int count = 0;                 StringBuilder sb = new StringBuilder();                 while ((count = sr.Read(buffer, 0, buffer.Length)) > 0)                 {                     sb.Append(new string(buffer));                 }                 strResult = sb.ToString();             }             sr.Close();             response.Close();             return strResult;         }    } } 

原创粉丝点击