前言:今天我主要寫的是關于頭消息的一個用處驗證用戶信息
下面我畫一個圖,可以先看圖
第一步:我們先開始做用戶請求代碼
首先:創建一個可執行的上下文對象塊并定義內部傳輸的通道
using (OperationContextScope scope = new OperationContextScope(userClient.InnerChannel))
然后:創建頭消息 要發送的SOAP傳輸的內容
MessageHeader myHeaderUid = MessageHeader.CreateHeader(
"header", "uid", UId);
header:標頭 xml 元素的本地名稱(名字可以任意取,但是必須和服務器端保持一致)
uid:標頭 XML 元素的命名空間 URI(名字可以任意取,但是必須和服務器端保持一致)
UId:要傳送的信息(是一個object類型的值)
最后:把創建要傳輸的頭內容添加到傳輸的對象中
OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderUid);
ok這樣就完成客戶端的編碼
1 ValidUserClient userClient =new ValidUserClient(); 2 while (true) 3 { 4 Console.Write("用戶名:"); 5 string UId = Console.ReadLine(); 6 Console.Write("密碼:"); 7 string Pwd = Console.ReadLine(); 8 using (OperationContextScope scope = new OperationContextScope(userClient.InnerChannel))//創建一個可執行的上下文對象塊并定義內部傳輸的通道 9 {10 MessageHeader myHeaderUid = MessageHeader.CreateHeader(11 "header", "uid", UId);12 MessageHeader myHeaderPwd= MessageHeader.CreateHeader(13 "header", "pwd", Pwd);14 OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderUid);15 OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderPwd);16 Console.WriteLine(userClient.User());17 } 18 }
第二步:服務端編碼
首先:開始檢索頭消息
int uIdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "uid");(注意保持與客戶端的保持一致,得到的是索引也就是頭信息位置(如果index=-1就表示沒有頭消息))
1 Dictionary<string,string> AllUsers =new Dictionary<string, string>(10); 2 public bool User() 3 { 4 InsertUser();//模擬數據庫動態添加用戶 5 string Uid = string.Empty; 6 string Pwd = string.Empty; 7 bool result = false; 8 int uIdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "uid"); 9 int pwdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "pwd");10 if (uIdIndex != -1)11 {12 Uid = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(uIdIndex);13 }14 if (pwdIndex!=-1)15 {16 Pwd = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(pwdIndex);17 }18 if (AllUsers.ContainsKey(Uid))19 {20 if (AllUsers[Uid] == Pwd)21 {22 result = true;23 }24 25 }26 return result;27 }28 29 PRivate void InsertUser()30 {31 AllUsers.Add("admin","123456");32 AllUsers.Add("sa","123456");33 AllUsers.Add("ldc","123456");34 AllUsers.Add("zd","123456");35 }
這樣就簡單的把頭消息驗證用戶完成了,我寫的有很多不好的地方大家看到了可以提出來,共同學習。下一篇著手寫消息協定和數據協定。
源碼下載
新聞熱點
疑難解答