目的,把远程服务器传回的Html,解析到类里面,为GridView等提供数据源
1 、向远程服务器Post数据
public int PostData(string url, string data, out string info)
{
informações = "";
CookieContainer cc = new CookieContainer();
Solicitação HttpWebRequest = WebRequest.Create(url) como HttpWebRequest;
solicitação.CookieContainer = cc;
request.Method = "POST";
request.ContentType = "aplicativo/x-www-form-urlencoded";
Fluxo requestStream = request.GetRequestStream();
byte[] byteArray = Encoding.UTF8.GetBytes(dados);
requestStream.Write(byteArray, 0, byteArray.Length);
requestStream.Close();
Resposta HttpWebResponse = request.GetResponse() como HttpWebResponse;
Uri respostaUri = resposta.ResponseUri;
Fluxo recebeStream = resposta.GetResponseStream();
Codificação codificação = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = novo StreamReader(receiveStream, encode);
string resultado = readStream.ReadToEnd();
informação = resultado;
retornar 0;
}2、解析返回的html,有省略
public ClassInfo[] GetClass(string html)
{
ArrayList ar = new ArrayList();
ArrayList arr = new ArrayList();
tabela de strings = "";
Regex regtable = new Regex(@"(?<=<table.*>).*?(?=</table>)", RegexOptions.Singleline);
Corresponder ma = regtable.Match(html);
enquanto (ma.Sucesso)
{
if (ma.Value.Trim() != "")
{
arr.Add(HttpUtility.HtmlDecode(ma.Value));
}
ma = ma.NextMatch();
}
for (int i = 0; i < arr.Count; i++)
{
tabela = arr[i].ToString() + tabela;
}
Regex reg = new Regex(@"(?<=<.*?>).*?(?=<.*?>)", RegexOptions.Singleline);
Correspondência m = reg.Match(tabela);
enquanto (m.Sucesso)
{
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();
}
retornar ci;
}
3. Use ClassInfo (课程类) e CodeSmith
classe pública ClassInfo
{
Variáveis de membro#region Variáveis de membro
string protegida _loginDate;
string protegida _logoutDate;
string protegida _registerDate;
string protegida _useMin;
string protegida _className;
string protegida _classType;
string protegida _percent;
//string protegida _nouse;
#endregion
Construtores#region Construtores
public ClassInfo() { }
public ClassInfo(string loginDate, string logoutDate, string RegisterDate, string useMin, string className, string classType, string percentual)
{
this._loginDate = loginDate;
this._logoutDate = logoutDate;
this._registerDate = dataderegistro;
this._useMin = useMin;
this._className = className;
this._classType = classType;
this._percent = porcentagem;
}
#endregion
Propriedades Públicas#region Propriedades Públicas
//string pública NoUse
// {
//obter{return _nouse;}
// definir{ _nouse= valor;}
// }
string pública LoginDate
{
obter { return _loginDate; }
set { _loginDate = valor; }
}
string pública LogoutDate
{
obter { return _logoutDate; }
definir { _logoutDate = valor; }
}
string pública RegisterDate
{
obter { return _registerDate; }
definir {_dataderegistro = valor; }
}
string pública UseMin
{
obter {retornar _useMin; }
definir { _useMin = valor; }
}
string pública ClassName
{
obter {retornar _nomedaclasse; }
definir
{
if (valor! = nulo && valor.Comprimento > 50)
lançar new ArgumentOutOfRangeException("Valor inválido para ClassName", valor, valor.ToString());
_className = valor;
}
}
string pública ClassType
{
obter {retornar _classType; }
definir
{
if (valor! = nulo && valor.Comprimento > 50)
lançar new ArgumentOutOfRangeException("Valor inválido para ClassType", valor, valor.ToString());
_classType = valor;
}
}
string pública Porcentagem
{
obter {retornar _por cento; }
definir
{
if (valor! = nulo && valor.Comprimento > 50)
throw new ArgumentOutOfRangeException("Valor inválido para porcentagem", valor, valor.ToString());
_porcentagem = valor;
}
}
#endregion
}