设为首页
加入收藏
站内地图
旧版入口
当前位置:首页 > 站长学院 > 网络编程 > ASP.NET

请求网址并解析返回的html

作者:佚名 出处:网络转载 时间:06-19 点击:

内容载入中...
支持原创支持 上学堂 目的,把远程服务器传回的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
    
{
        
#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


        
#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


        
#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

    }
收藏本文:
】【打印页面】【推荐给朋友】【关闭窗口
>> 下一篇 :单件模式

站长学院

推荐信息