1. 程式人生 > >HTTP模擬工具【C#/Winform源碼】、Json綁定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool這幾個主要開源框架

HTTP模擬工具【C#/Winform源碼】、Json綁定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool這幾個主要開源框架

type form num -m 請求 resource dap bool dev

HTTP模擬工具

開發語言:C#/Winform
開發工具:Visual Studio 2017
數據庫: SQLite
使用框架:界面-MetroModernUI
Http請求-RestSharp
ORM-Dapper.Net
Json解析-Newtonsoft.Json
多線程-SmartThreadPool
本來打算試一下Dapper.Net擴展框架-DapperExtensions,用了有點問題,不知什麽原因後來棄用了,用回原生的Dapper.Net。
相關程序包被我刪了,NuGet管理器自行還原。

項目地址:在文章最底部

來!上圖!!
Get請求方式


技術分享

Post請求方式
技術分享

Http請求的核心代碼

 1         /// <summary>
 2         /// 請求
 3         /// </summary>
 4         /// <param name="url"></param>
 5         /// <param name="jsonData"></param>
 6         /// <param name="methodType"></param>
 7         ///
<returns></returns> 8 private string RequestData(string url, Dictionary<string, string> headerData, string jsonData, Method methodType) 9 { 10 string urlHead = ""; 11 string urlTail = ""; 12 if (url.IndexOf("http://") == 0) 13
{ 14 urlHead = "http://"; 15 urlTail = url.Substring("http://".Length); 16 } 17 else if (url.IndexOf("https://") == 0) 18 { 19 urlHead = "https://"; 20 urlTail = url.Substring("https://".Length); 21 } 22 else 23 { 24 urlHead = "http://"; 25 urlTail = url; 26 } 27 28 var client = new RestClient(urlHead + urlTail.Split(/)[0]); 29 var request = new RestRequest(url.Substring(url.LastIndexOf(urlTail.Split(/)[0]) + urlTail.Split(/)[0].Length + 1), methodType); 30 if (methodType == Method.POST) 31 request.AddParameter("application/json;charset=utf-8", jsonData, ParameterType.RequestBody); 32 33 foreach (var item in headerData) 34 { 35 request.AddHeader(item.Key, item.Value); 36 } 37 38 // execute the request 39 IRestResponse response = client.Execute(request); 40 var content = response.Content; // raw content as string 41 42 return content.ToString(); 43 }

Json數據綁定TreeView控件核心代碼

  1         /// <summary>
  2         /// 綁定樹形控件
  3         /// </summary>
  4         /// <param name="treeView"></param>
  5         /// <param name="strJson"></param>
  6         private void BindTreeView(TreeView treeView, string strJson)
  7         {
  8             treeView.Nodes.Clear();
  9 
 10             //string strJson = "1";//拋異常
 11             //string strJson = "{}";
 12             //string strJson = "{\"errcode\":0,\"errmsg\":\"查詢成功\",\"datas\":[{\"c_ResourceType\":\"BootLogo\",\"c_Url\":\"/Upload/Magazine/4e09315d-7d92-4e6a-984d-80f684a24da8.jpg\"}]}";
 13             //string strJson = "[{\"DeviceCode\":\"430BE-B3C6A-4E953-9F972-FC741\",\"RoomNum\":\"777\"},{\"DeviceCode\":\"BF79F -09807-EEA31-2499E-31A98\",\"RoomNum\":\"888\"}]";
 14 
 15             if (IsJOjbect(strJson))
 16             {
 17                 JObject jo = (JObject)JsonConvert.DeserializeObject(strJson);
 18 
 19                 foreach (var item in jo)
 20                 {
 21                     TreeNode tree;
 22                     if (item.Value.GetType() == typeof(JObject))
 23                     {
 24                         tree = new TreeNode(item.Key);
 25                         AddTreeChildNode(ref tree, item.Value.ToString());
 26                         treeView.Nodes.Add(tree);
 27                     }
 28                     else if (item.Value.GetType() == typeof(JArray))
 29                     {
 30                         tree = new TreeNode(item.Key);
 31                         AddTreeChildNode(ref tree, item.Value.ToString());
 32                         treeView.Nodes.Add(tree);
 33                     }
 34                     else
 35                     {
 36                         tree = new TreeNode(item.Key + ":" + item.Value.ToString());
 37                         treeView.Nodes.Add(tree);
 38                     }
 39                 }
 40             }
 41             if (IsJArray(strJson))
 42             {
 43                 JArray ja = (JArray)JsonConvert.DeserializeObject(strJson);
 44                 int i = 0;
 45                 foreach (JObject item in ja)
 46                 {
 47                     TreeNode tree = new TreeNode("Array [" + (i++) + "]");
 48                     foreach (var itemOb in item)
 49                     {
 50                         TreeNode treeOb;
 51                         if (itemOb.Value.GetType() == typeof(JObject))
 52                         {
 53                             treeOb = new TreeNode(itemOb.Key);
 54                             AddTreeChildNode(ref treeOb, itemOb.Value.ToString());
 55                             tree.Nodes.Add(treeOb);
 56 
 57                         }
 58                         else if (itemOb.Value.GetType() == typeof(JArray))
 59                         {
 60                             treeOb = new TreeNode(itemOb.Key);
 61                             AddTreeChildNode(ref treeOb, itemOb.Value.ToString());
 62                             tree.Nodes.Add(treeOb);
 63                         }
 64                         else
 65                         {
 66                             treeOb = new TreeNode(itemOb.Key + ":" + itemOb.Value.ToString());
 67                             tree.Nodes.Add(treeOb);
 68                         }
 69                     }
 70                     treeView.Nodes.Add(tree);
 71                 }
 72             }
 73             treeView.ExpandAll();
 74         }
 75 
 76         /// <summary>
 77         /// 添加子節點
 78         /// </summary>
 79         /// <param name="parantNode"></param>
 80         /// <param name="value"></param>
 81         public void AddTreeChildNode(ref TreeNode parantNode, string value)
 82         {
 83             if (IsJOjbect(value))
 84             {
 85                 JObject jo = (JObject)JsonConvert.DeserializeObject(value);
 86                 foreach (var item in jo)
 87                 {
 88                     TreeNode tree;
 89                     if (item.Value.GetType() == typeof(JObject))
 90                     {
 91                         tree = new TreeNode(item.Key);
 92                         AddTreeChildNode(ref tree, item.Value.ToString());
 93                         parantNode.Nodes.Add(tree);
 94                     }
 95                     else if (item.Value.GetType() == typeof(JArray))
 96                     {
 97                         tree = new TreeNode(item.Key);
 98                         AddTreeChildNode(ref tree, item.Value.ToString());
 99                         parantNode.Nodes.Add(tree);
100                     }
101                     else
102                     {
103                         tree = new TreeNode(item.Key + ":" + item.Value.ToString());
104                         parantNode.Nodes.Add(tree);
105                     }
106                 }
107             }
108             if (IsJArray(value))
109             {
110                 JArray ja = (JArray)JsonConvert.DeserializeObject(value);
111                 int i = 0;
112                 foreach (JObject item in ja)
113                 {
114                     TreeNode tree = new TreeNode("Array [" + (i++) + "]");
115                     parantNode.Nodes.Add(tree);
116                     foreach (var itemOb in item)
117                     {
118                         TreeNode treeOb;
119                         if (itemOb.Value.GetType() == typeof(JObject))
120                         {
121                             treeOb = new TreeNode(itemOb.Key);
122                             AddTreeChildNode(ref treeOb, itemOb.Value.ToString());
123                             tree.Nodes.Add(treeOb);
124 
125                         }
126                         else if (itemOb.Value.GetType() == typeof(JArray))
127                         {
128                             treeOb = new TreeNode(itemOb.Key);
129                             AddTreeChildNode(ref treeOb, itemOb.Value.ToString());
130                             tree.Nodes.Add(treeOb);
131                         }
132                         else
133                         {
134                             treeOb = new TreeNode(itemOb.Key + ":" + itemOb.Value.ToString());
135                             tree.Nodes.Add(treeOb);
136                         }
137                     }
138                 }
139             }
140         }
141 
142         /// <summary>
143         /// 判斷是否JOjbect類型
144         /// </summary>
145         /// <param name="value"></param>
146         /// <returns></returns>
147         private bool IsJOjbect(string value)
148         {
149             try
150             {
151                 JObject ja = JObject.Parse(value);
152                 return true;
153             }
154             catch (Exception ex)
155             {
156                 return false;
157             }
158         }
159 
160         /// <summary>
161         /// 判斷是否JArray類型
162         /// </summary>
163         /// <param name="value"></param>
164         /// <returns></returns>
165         private bool IsJArray(string value)
166         {
167             try
168             {
169                 JArray ja = JArray.Parse(value);
170                 return true;
171             }
172             catch (Exception ex)
173             {
174                 return false;
175             }
176         }

下載項目

編譯後Debug

HTTP模擬工具【C#/Winform源碼】、Json綁定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool這幾個主要開源框架