- 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;
- }
- }
- }
c# 实现网页上用户自动登陆|asp.net 模拟网站登录
最新推荐文章于 2024-05-13 20:35:27 发布