广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP.NET技巧:请求网址并解析返回的html

    2018-05-03 14:17:39 次阅读 稿源:互联网
    广告

      目的,把远程服务器传回的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
        }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告