zoukankan      html  css  js  c++  java
  • 使用XML与远程服务器进行交互

    最近在做的一个项目其中的一部分是与远程服务器进行交互,确定身份验证的合法性,于是编写了SendRequest方法

    此方法发送给远程服务器XML请求,服务器经过处理后,返回XML回应,由此方法接收到后进行返回。

     1 protected string SendRequest(string strXML) { 
     2     string str = ""; //双方协定的XML格式 
     3     Encoding encoding = Encoding.UTF8; //接收页面       
     4     string strUrl = "http://localhost:14360/WebSite16/Handler.ashx"; 
     5     byte[] data = encoding.GetBytes(strXML); //准备请求... 
     6     HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl); 
     7     myRequest.Method = "POST"; 
     8     myRequest.ContentType = "text/xml;charset=utf-8"; 
     9     myRequest.ContentLength = data.Length; //身份认证,特别注意,参数用户名,密码 
    10     NetworkCredential cred = new NetworkCredential("wcadmin", "wcadmin"); 
    11     myRequest.Credentials = cred; //在信息请求头部加入验证信息,不然验证不通过 
    12     myRequest.PreAuthenticate = true; 
    13     Stream newStream = myRequest.GetRequestStream(); //发送数据 
    14     newStream.Write(data, 0, data.Length); 
    15     newStream.Close(); 
    16     WebResponse response = myRequest.GetResponse(); 
    17     Stream resStream = response.GetResponseStream(); 
    18     StreamReader sr = new StreamReader(resStream, System.Text.Encoding.UTF8); 
    19     str = sr.ReadToEnd();//接收返回值,返回值可以是xml 
    20     resStream.Close(); 
    21     sr.Close(); 
    22     return str; 
    23 }

     解析返回的XML的方法如下代码片段:

     1 public bool CheckUser(string token) {
     2     bool flag = false;  //验证成功与否的标识
     3     //向服务器发出验证XML信息
     4     string requestXML = "";
     5     requestXML = "<?xml version="1.0" encoding="UTF-8"?><ecity><msgname>XXXXXX</msgname><msgversion>1.0.0</msgversion><transactionid>000000</transactionid><timestamp>"
     6         + DateTime.Now.ToString("yyyyMMddhhmmss") + "</timestamp><msgsender>abc</msgsender><svccont><token>"+token+"</token></svccont></ecity>";
     7 
     8     //发送验证的XML并获取返回的XML信息
     9     string responseXML = "";
    10     responseXML= SendRequest(requestXML);
    11 
    12     //解析XML信息
    13     XmlDocument xmlDoc = new XmlDocument();
    14     xmlDoc.LoadXml(responseXML);
    15     XmlNodeList nodes = xmlDoc.SelectNodes("/ecity/msgname");
    16     if (nodes.Count > 0)
    17     {
    18         //首先判断是否接口正确
    19         if (nodes[0].InnerText.Trim().ToLower() == "getuserinforesp")
    20         {
    21             nodes = xmlDoc.SelectNodes("/ecity/result/rspcode");
    22             if (nodes.Count > 0)
    23             {
    24                 //表示验证通过
    25                 if (nodes[0].InnerText.Trim() == "0")
    26                 {
    27                     flag = true;
    28                 }
    29             }
    30         }
    31     }
    32 
    33     return flag;
    34 }

    转自:http://www.cnblogs.com/shunyao8210/archive/2011/09/19/2181075.html

  • 相关阅读:
    NFS(Network File System)即网络文件系统 (转)
    抓包神器 tcpdump 使用介绍 (转)
    sms短信网关对接
    spring 事务的传播级别和隔离级别
    持续集成是什么?
    理解Cookie和Session机制
    使用df -h命令查看磁盘空间使用率不算高,还有很多空余空间,但是创建文件或写入数据时一直报错磁盘写满
    删除文件后,磁盘空间没有释放的处理记录
    Springboot启动原理解析
    使用idea创建springboot项目
  • 原文地址:https://www.cnblogs.com/olmlo/p/3576272.html
Copyright © 2011-2022 走看看