使用XML与远程服务器进行交互
2011-10-10 15:35
483 查看
最近在做的一个项目其中的一部分是与远程服务器进行交互,确定身份验证的合法性,于是编写了SendRequest方法
此方法发送给远程服务器XML请求,服务器经过处理后,返回XML回应,由此方法接收到后进行返回。
1 protected string SendRequest(string strXML)
2 {
3 string str = ""; //双方协定的XML格式
4 Encoding encoding = Encoding.UTF8; //接收页面
5 string strUrl = "http://localhost:14360/WebSite16/Handler.ashx";
6 byte[] data = encoding.GetBytes(strXML); //准备请求...
7 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl);
8 myRequest.Method = "POST";
9 myRequest.ContentType = "text/xml;charset=utf-8";
myRequest.ContentLength = data.Length; //身份认证,特别注意,参数用户名,密码
NetworkCredential cred = new NetworkCredential("wcadmin", "wcadmin");
myRequest.Credentials = cred; //在信息请求头部加入验证信息,不然验证不通过
myRequest.PreAuthenticate = true;
Stream newStream = myRequest.GetRequestStream(); //发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
WebResponse response = myRequest.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.UTF8);
str = sr.ReadToEnd();//接收返回值,返回值可以是xml
resStream.Close();
sr.Close();
return str;
}
解析返回的XML的方法如下代码片段:
1 public bool CheckUser(string token)
2 {
3 bool flag = false; //验证成功与否的标识
4 //向服务器发出验证XML信息
5 string requestXML = "";
6 requestXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ecity><msgname>XXXXXX</msgname><msgversion>1.0.0</msgversion><transactionid>000000</transactionid><timestamp>"
7 + DateTime.Now.ToString("yyyyMMddhhmmss") + "</timestamp><msgsender>abc</msgsender><svccont><token>"+token+"</token></svccont></ecity>";
8
9 //发送验证的XML并获取返回的XML信息
string responseXML = "";
responseXML= SendRequest(requestXML);
//解析XML信息
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseXML);
XmlNodeList nodes = xmlDoc.SelectNodes("/ecity/msgname");
if (nodes.Count > 0)
{
//首先判断是否接口正确
if (nodes[0].InnerText.Trim().ToLower() == "getuserinforesp")
{
nodes = xmlDoc.SelectNodes("/ecity/result/rspcode");
if (nodes.Count > 0)
{
//表示验证通过
if (nodes[0].InnerText.Trim() == "0")
{
flag = true;
}
}
}
}
return flag;
}
以上代码为真实项目中的代码,经过修改后附上的
此方法发送给远程服务器XML请求,服务器经过处理后,返回XML回应,由此方法接收到后进行返回。
1 protected string SendRequest(string strXML)
2 {
3 string str = ""; //双方协定的XML格式
4 Encoding encoding = Encoding.UTF8; //接收页面
5 string strUrl = "http://localhost:14360/WebSite16/Handler.ashx";
6 byte[] data = encoding.GetBytes(strXML); //准备请求...
7 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl);
8 myRequest.Method = "POST";
9 myRequest.ContentType = "text/xml;charset=utf-8";
myRequest.ContentLength = data.Length; //身份认证,特别注意,参数用户名,密码
NetworkCredential cred = new NetworkCredential("wcadmin", "wcadmin");
myRequest.Credentials = cred; //在信息请求头部加入验证信息,不然验证不通过
myRequest.PreAuthenticate = true;
Stream newStream = myRequest.GetRequestStream(); //发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
WebResponse response = myRequest.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.UTF8);
str = sr.ReadToEnd();//接收返回值,返回值可以是xml
resStream.Close();
sr.Close();
return str;
}
解析返回的XML的方法如下代码片段:
1 public bool CheckUser(string token)
2 {
3 bool flag = false; //验证成功与否的标识
4 //向服务器发出验证XML信息
5 string requestXML = "";
6 requestXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ecity><msgname>XXXXXX</msgname><msgversion>1.0.0</msgversion><transactionid>000000</transactionid><timestamp>"
7 + DateTime.Now.ToString("yyyyMMddhhmmss") + "</timestamp><msgsender>abc</msgsender><svccont><token>"+token+"</token></svccont></ecity>";
8
9 //发送验证的XML并获取返回的XML信息
string responseXML = "";
responseXML= SendRequest(requestXML);
//解析XML信息
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseXML);
XmlNodeList nodes = xmlDoc.SelectNodes("/ecity/msgname");
if (nodes.Count > 0)
{
//首先判断是否接口正确
if (nodes[0].InnerText.Trim().ToLower() == "getuserinforesp")
{
nodes = xmlDoc.SelectNodes("/ecity/result/rspcode");
if (nodes.Count > 0)
{
//表示验证通过
if (nodes[0].InnerText.Trim() == "0")
{
flag = true;
}
}
}
}
return flag;
}
以上代码为真实项目中的代码,经过修改后附上的
相关文章推荐
- 使用XML与远程服务器进行交互
- 使用XML与远程服务器进行交互
- 使用XMLHttpRequest进行浏览器和服务器的交互
- 使用JSch进行SSH交互(服务器对私钥公钥都鉴权)
- Python使用paramiko进行远程交互
- jQuery的ajax()检验用户名;通过jQuery的load()/get()/post()方法实现;使用XMLHTTPRequest对象来进行AJAX的异步数据交互
- python 使用ssh连接服务器进行远程命令行操作
- Python使用Paramiko模块编写脚本进行远程服务器操作
- 使用XML-RPC进行远程文件共享
- python项目练习八:使用XML-RPC进行远程文件共享
- 使用xmlhttprequest对象来进行AJAX的异步数据交互
- 浏览器与服务器的交互原理解析(三)-------使用Ajax进行异步请求
- 使用java.net进行Android和服务器信息交互
- 使用Eclipse进行远程调试 外加 ant 直接打包到服务器
- 使用FTP进行数据库远程服务器备份(个人感觉,这种方法比较可行)
- Linux中使用scp命令进行文件上传至远程服务器
- 多个客户端使用Socket通过一个服务器进行交互的小例子
- 使用Xshell或PuTTY对阿里云服务器进行远程连接操作
- iOS- JSon和Xml解析,与服务器交互数据的解析详解与使用,各种解析方式详解
- Python使用Paramiko模块编写脚本进行远程服务器操作