正文

请求网址并解析返回的html2006-08-03 11:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/17146.html

分享到:

  目的,把远程服务器传回的Html,解析到类里面,为GridView等提供数据源1 、向远程服务器Post数据public int PostData(string url, string data, out string info)        {             info = "";            CookieContainer cc = new CookieContainer();            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;            request.CookieContainer = cc;            request.Method = "POST";            request.ContentType = "application/x-www-form-urlencoded";            Stream requestStream = request.GetRequestStream();            byte[] byteArray = Encoding.UTF8.GetBytes(data);            requestStream.Write(byteArray, 0, byteArray.Length);            requestStream.Close();            HttpWebResponse response = request.GetResponse() as HttpWebResponse;            Uri responseUri = response.ResponseUri;            Stream receiveStream = response.GetResponseStream();            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");            StreamReader readStream = new StreamReader(receiveStream, encode);            string result = readStream.ReadToEnd();            info = result;            return 0;         }2、解析返回的html,有省略 public ClassInfo[] GetClass(string html)        {             ArrayList ar = new ArrayList();            ArrayList arr = new ArrayList();            string table = "";            Regex regtable = new Regex(@"(?<=<table.*>).*?(?=</table>)", RegexOptions.Singleline);            Match ma = regtable.Match(html);            while (ma.Success)            {                if (ma.Value.Trim() != "")                {                    arr.Add(HttpUtility.HtmlDecode(ma.Value));                }                ma = ma.NextMatch();            }            for (int i = 0; i < arr.Count; i++)            {                table = arr[i].ToString() + table;            }             Regex reg = new Regex(@"(?<=<.*?>).*?(?=<.*?>)", RegexOptions.Singleline);            Match m = reg.Match(table);             while (m.Success)            {                if (m.Value.Trim() != "")                {                     ar.Add(HttpUtility.HtmlDecode(m.Value));                }                m = m.NextMatch();            }            ClassInfo[] ci = new ClassInfo[classno];            for (int i = 0; i < classno; i++)            {                ci[i] = new ClassInfo();                ci[i].RegisterDate = (ar[i * 8 + 0]).ToString();                 ci[i].LoginDate = (ar[i * 8 + 1]).ToString();                ci[i].LogoutDate = (ar[i * 8 + 2]).ToString();                ci[i].UseMin = ar[i * 8 + 3].ToString();                ci[i].ClassName = ar[i * 8 + 5].ToString();                ci[i].ClassType = ar[i * 8 + 6].ToString();                ci[i].Percent = ar[i * 8 + 7].ToString();             }               return ci;         }3、定义ClassInfo类(课程类),用CodeSmith生成 public class ClassInfo    {        Member Variables#region Member Variables         protected string _loginDate;        protected string _logoutDate;        protected string _registerDate;        protected string _useMin;        protected string _className;        protected string _classType;        protected string _percent;        //protected string _nouse;        #endregion         Constructors#region Constructors         public ClassInfo() { }         public ClassInfo(string loginDate, string logoutDate, string registerDate, string useMin, string className, string classType, string percent)        {            this._loginDate = loginDate;            this._logoutDate = logoutDate;            this._registerDate = registerDate;            this._useMin = useMin;            this._className = className;            this._classType = classType;            this._percent = percent;        }         #endregion         Public Properties#region Public Properties        //        public string NoUse        //        {        //            get{return _nouse;}        //            set{ _nouse= value;}        //        }           public string LoginDate        {            get { return _loginDate; }            set { _loginDate = value; }        }         public string LogoutDate        {            get { return _logoutDate; }            set { _logoutDate = value; }        }         public string RegisterDate        {            get { return _registerDate; }            set { _registerDate = value; }        }         public string UseMin        {            get { return _useMin; }            set { _useMin = value; }        }         public string ClassName        {            get { return _className; }            set            {                if (value != null && value.Length > 50)                    throw new ArgumentOutOfRangeException("Invalid value for ClassName", value, value.ToString());                _className = value;            }        }         public string ClassType        {            get { return _classType; }            set            {                if (value != null && value.Length > 50)                    throw new ArgumentOutOfRangeException("Invalid value for ClassType", value, value.ToString());                _classType = value;            }        }         public string Percent        {            get { return _percent; }            set            {                if (value != null && value.Length > 50)                    throw new ArgumentOutOfRangeException("Invalid value for Percent", value, value.ToString());                _percent = value;            }        }         #endregion    }

阅读(2670) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册