使用XML与远程服务器进行交互

最近在做的一个项目其中的一部分是与远程服务器进行交互,确定身份验证的合法性,于是编写了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 "
10          myRequest.ContentLength  =  data.Length;  // 身份认证,特别注意,参数用户名,密码 
11          NetworkCredential cred  =   new  NetworkCredential( " wcadmin " " wcadmin " ); 
12          myRequest.Credentials  =  cred;  // 在信息请求头部加入验证信息,不然验证不通过 
13          myRequest.PreAuthenticate  =   true
14          Stream newStream  =  myRequest.GetRequestStream();  // 发送数据 
15          newStream.Write(data,  0 , data.Length); 
16          newStream.Close(); 
17          WebResponse response  =  myRequest.GetResponse(); 
18          Stream resStream  =  response.GetResponseStream(); 
19          StreamReader sr  =   new  StreamReader(resStream, System.Text.Encoding.UTF8); 
20          str  =  sr.ReadToEnd(); // 接收返回值,返回值可以是xml 
21          resStream.Close(); 
22          sr.Close(); 
23           return str; 

24     }

 

 解析返回的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信息
10           string  responseXML  =   "" ;
11          responseXML =  SendRequest(requestXML);
12 
13           // 解析XML信息
14          XmlDocument xmlDoc  =   new  XmlDocument();
15          xmlDoc.LoadXml(responseXML);
16          XmlNodeList nodes  =  xmlDoc.SelectNodes( " /ecity/msgname " );
17           if  (nodes.Count  >   0 )
18          {
19               // 首先判断是否接口正确
20               if  (nodes[ 0 ].InnerText.Trim().ToLower()  ==   " getuserinforesp " )
21              {
22                  nodes  =  xmlDoc.SelectNodes( " /ecity/result/rspcode " );
23                   if  (nodes.Count  >   0 )
24                  {
25                       // 表示验证通过
26                       if  (nodes[ 0 ].InnerText.Trim()  ==   " 0 " )
27                      {
28                          flag  =   true ;
29                      }
30                  }
31              }
32          }
33 
34           return flag;

35     }

 

以上代码为真实项目中的代码,经过修改后附上的 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值