最近在做的一個項目其中的一部分是與遠程伺服器進行交互,確定身份驗證的合法性,於是編寫了SendRequest方法 此方法發送給遠程伺服器XML請求,伺服器經過處理後,返回XML回應,由此方法接收到後進行返回。 1 protected string SendRequest(string strXML)
最近在做的一個項目其中的一部分是與遠程伺服器進行交互,確定身份驗證的合法性,於是編寫了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 }
以上代碼為真實項目中的代碼,經過修改後附上的