using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.XPath;
using System.Security.Cryptography;//MD5函数命名空间
namespace faxapp
{
public partial class faxtest : System.Web.UI.Page
{
//---------------------取传真状态变量-------------------
public string[] y = new string[5];
string userid;
protected DateTime showtime = new DateTime();
long timestamp;
string check;
string password;
string strmd5;
string starttime="2007-7-1 00:00:00";//每次的起始时间
string endtime = System.DateTime.Now.ToString();//每次的结束时间
int item;//faxitem下的元素个数
//END---------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
FetchSendFaxState();
}
//-----------------------确定发送的传真状态,录入数据库中(解析XML文件)-------------------------
public void FetchSendFaxState()
{
userid = System.Configuration.ConfigurationManager.AppSettings.Get("FaxUserId");
password = System.Configuration.ConfigurationManager.AppSettings.Get("Mailpassword");
timestamp = showtime.Ticks;
strmd5 = userid + password + timestamp;
check = getMD5(strmd5);//给check赋上以MD5形式加密的内容
string strxml = "http://www.gfax.cn/queryinterface/querytask.php?message-id=&starttime=" + starttime + "&userid=" + userid + "&endtime=" + System.DateTime.Now.ToString() + "&faxno=&faxstatus=&subuser=×tamp=" + timestamp + "&check=" + check;
//try
//{
//取得XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(strxml);//xml文件
Response.Write(strxml);
//解析返回的XML文件
XmlNodeList xmlList = xmlDoc.SelectSingleNode("gfaxroot").ChildNodes;
//解析faxitem结合集里的元素值
XmlNodeList faxItems = xmlDoc.DocumentElement.SelectNodes("faxtask");
item = faxItems.Count;
Response.Write("二级子接点有"+item+"个<br>");
string[,] fi = new string[item, 11];
//遍历gfaxroot下的所有子接点
foreach (XmlNode xmlNo in xmlList)
{
XmlElement xe = (XmlElement)xmlNo;
{
if (xe.Name == "result")//是否成功
{
y[0] = xe.InnerText;
}
if (xe.Name == "count")//任务总数
{
y[1] = xe.InnerText;
}
if (xe.Name == "success")//任务总数中成功的次数
{
y[2] = xe.InnerText;
}
if (xe.Name == "failed")//任务总数中失败的次数
{
y[3] = xe.InnerText;
}
if (xe.Name == "description")//查询结果描述
{
y[4] = xe.InnerText;
}
}
}
//测试结果
if (y[0].ToString().Trim() != "0")
{
Response.Write("<font color='red'>请李福云从新回到代码中仔细查看:</font><br>");
Response.Write("<font color='red'>result值:" + y[0].ToString() + "</font><br>");
Response.Write("<font color='red'>count值:" + y[1].ToString() + "</font><br>");
Response.Write("<font color='red'>success值:" + y[2].ToString() + "</font><br>");
Response.Write("<font color='red'>failed值:" + y[3].ToString() + "</font><br>");
Response.Write("<font color='red'>description值:" + y[4].ToString() + "</font><br>");
Response.Write("<font color='red'>错误原因为:" + y[4].ToString() + "</font><br>");
}
else if (y[0].ToString().Trim().Equals("0"))
{
//取所有faxitem接点下的值
for (int i = 0; i < item; i++)
{
foreach (XmlNode xmlNo in faxItems[i])
{
XmlElement xe = (XmlElement)xmlNo;
{
if (xe.Name == "taskid")//任务ID,是主健值
{
fi[i,0] = xe.InnerText;
}
if (xe.Name == "subtime")//提交时间
{
fi[i,1] = xe.InnerText;
}
if (xe.Name == "custid")//用户帐号
{
fi[i,2] = xe.InnerText;
}
if (xe.Name == "faxno")//接受传真号码
{
fi[i,3] = xe.InnerText;
}
if (xe.Name == "starttime")//传真开始处理时间
{
fi[i,4] = xe.InnerText;
}
if (xe.Name == "endtime")//传真结束处理时间
{
fi[i,5] = xe.InnerText;
}
if (xe.Name == "cost")//传真开始处理时间到传真结束处理时间的通话长(以秒来计算)
{
fi[i,6] = xe.InnerText;
}
if (xe.Name == "fee")//每个传真任务所需费用
{
fi[i,7] = xe.InnerText;
}
if (xe.Name == "status")//查询结果状态描述,为代码显示区别即发送状态
{
fi[i,8] = xe.InnerText;
}
if (xe.Name == "description")//查询结果描述
{
fi[i,9] = xe.InnerText;
}
if (xe.Name == "messageid")//邮件编号MessageID
{
fi[i,10] = xe.InnerText;
}
}
}
}
//打印测试结果
Response.Write("------------------------------测试结果------------------------<br>");
Response.Write("<font color='red'>一级接点gfaxroot下所有子接点值查看:</font><br>");
Response.Write("<font color='red'>result值:" + y[0].ToString() + "</font><br>");
//Response.Write("<font color='red'>count值:" + y[1].ToString() + "</font><br>");
//Response.Write("<font color='red'>success值:" + y[2].ToString() + "</font><br>");
//Response.Write("<font color='red'>failed值:" + y[3].ToString() + "</font><br>");
Response.Write("<font color='red'>description值:" + y[4].ToString() + "</font><br>");
Response.Write("--------------------------------------------------------------<br>");
Response.Write("<font color='red'>二级接点faxitem下所有子接点值查看:</font><br>");
Response.Write("--------------------------------------------------------------<br>");
for (int i = 0; i < item; i++)
{
Response.Write("<font color='red'>第" + (i + 1) + "条:</font><br>");
Response.Write("<font color='red'>taskid值:" + fi[i,0].ToString() + "</font><br>");
Response.Write("<font color='red'>subtime值:" + fi[i,1].ToString() + "</font><br>");
Response.Write("<font color='red'>custid值:" + fi[i,2].ToString() + "</font><br>");
Response.Write("<font color='red'>faxno值:" + fi[i,3].ToString() + "</font><br>");
Response.Write("<font color='red'>starttime值:" + fi[i,4].ToString() + "</font><br>");
Response.Write("<font color='red'>endtime值:" + fi[i,5].ToString() + "</font><br>");
Response.Write("<font color='red'>cost值:" + fi[i,6].ToString() + "</font><br>");
Response.Write("<font color='red'>fee值:" + fi[i,7].ToString() + "</font><br>");
Response.Write("<font color='red'>status值:" + fi[i,8].ToString() + "</font><br>");
Response.Write("<font color='red'>description值:" + fi[i,9].ToString() + "</font><br>");
Response.Write("<font color='red'>messageid值:" + fi[i,10].ToString() + "</font><br>");
Response.Write("--------------------------------------------------------------<br>");
}
}
//}
//catch
//{
// Response.Write("<font color='red'>错误原因:没有Internet网连接,请检查Internet网连接状态!</font><br>");
//}
}
//MD5加密方法
public static string getMD5(string str)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.Default.GetBytes(str);
byte[] result = md5.ComputeHash(data);
String ret = "";
for (int i = 0; i < result.Length; i++)
ret += result[i].ToString("x").PadLeft(2, '0');
return ret;
}
//End-----------------------------------------------------------------------------------------
}
}