멋진, 把远程服务器传回的Html, 解析到类里面, 为GridView等提供数据源
1 、向远程服务器Post数据
public int PostData(문자열 URL, 문자열 데이터, 문자열 정보 출력)
{
정보 = "";
CookieContainer cc = new CookieContainer();
HttpWebRequest 요청 = HttpWebRequest로 WebRequest.Create(url);
request.CookieContainer = 참조;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
스트림 requestStream = request.GetRequestStream();
byte[] byteArray = Encoding.UTF8.GetBytes(data);
requestStream.Write(byteArray, 0, byteArray.Length);
requestStream.Close();
HttpWebResponse 응답 = request.GetResponse() as HttpWebResponse;
Uri responseUri = response.ResponseUri;
스트림 receiveStream = response.GetResponseStream();
인코딩 encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(receiveStream, encode);
문자열 결과 = readStream.ReadToEnd();
정보 = 결과;
0을 반환합니다.
}2、解析返回的html,有省略
공개 ClassInfo[] GetClass(문자열 html)
{
ArrayList ar = new ArrayList();
ArrayList arr = new ArrayList();
문자열 테이블 = "";
Regex regtable = new Regex(@"(?<=<table.*>).*?(?=</table>)", RegexOptions.Singleline);
매치 ma = regtable.Match(html);
동안(ma.성공)
{
if (ma.Value.Trim() != "")
{
arr.Add(HttpUtility.HtmlDecode(ma.Value));
}
ma = ma.NextMatch();
}
for (int i = 0; i < arr.Count; i++)
{
테이블 = arr[i].ToString() + 테이블;
}
Regex reg = new Regex(@"(?<=<.*?>).*?(?=<.*?>)", RegexOptions.Singleline);
m 일치 = reg.Match(table);
동안 (m.성공)
{
if (m.Value.Trim() != "")
{
ar.Add(HttpUtility.HtmlDecode(m.Value));
}
m = m.NextMatch();
}
ClassInfo[] ci = 새로운 ClassInfo[classno];
for (int i = 0; i < classno; i++)
{
ci[i] = 새로운 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();
}
ci를 반환;
}
3、ClassInfo类(课程类)를 정의하고 CodeSmith생성
공개 클래스 ClassInfo
{
멤버 변수#region 멤버 변수
보호된 문자열 _loginDate;
보호된 문자열 _logoutDate;
보호된 문자열 _registerDate;
보호된 문자열 _useMin;
보호된 문자열 _className;
보호된 문자열 _classType;
보호된 문자열 _percent;
//보호된 문자열 _nouse;
#endregion
생성자#region 생성자
public ClassInfo() { }
public ClassInfo(string loginDate, 문자열 logoutDate, 문자열 RegisterDate, 문자열 useMin, 문자열 className, 문자열 classType, 문자열 퍼센트)
{
this._loginDate = 로그인 날짜;
this._logoutDate = logoutDate;
this._registerDate = 등록날짜;
this._useMin = useMin;
this._className = 클래스이름;
this._classType = classType;
this._percent = 퍼센트;
}
#endregion
공공 속성#region 공공 속성
// 공개 문자열 NoUse
// {
// get{return _nouse;}
// 설정{ _nouse= 값;}
// }
공개 문자열 LoginDate
{
get { return _loginDate; }
설정 { _loginDate = 값; }
}
공개 문자열 LogoutDate
{
get { return _logoutDate; }
설정 { _logoutDate = 값; }
}
공개 문자열 RegisterDate
{
get { return _registerDate; }
set { _registerDate = 값; }
}
공개 문자열 UseMin
{
get { return _useMin; }
설정 { _useMin = 값; }
}
공개 문자열 ClassName
{
get { return _className; }
세트
{
if (값 != null && 값.길이 > 50)
throw new ArgumentOutOfRangeException("ClassName에 대한 잘못된 값", value, value.ToString());
_className = 값;
}
}
공개 문자열 ClassType
{
get { return _classType; }
세트
{
if (값 != null && 값.길이 > 50)
throw new ArgumentOutOfRangeException("ClassType에 대한 잘못된 값", value, value.ToString());
_classType = 값;
}
}
공개 문자열 백분율
{
get { return _percent; }
세트
{
if (값 != null && 값.길이 > 50)
throw new ArgumentOutOfRangeException("잘못된 백분율 값", value, value.ToString());
_퍼센트 = 가치;
}
}
#끝지역
}