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

来源:http://www.cnblogs.com/xyzing/archive/2017/07/14/7171677.html
-Advertisement-
Play Games

HTTP模擬工具 開發語言:C#/Winform開發工具:Visual Studio 2017資料庫: SQLite使用框架:界面-MetroModernUI Http請求-RestSharp ORM-Dapper.Net Json解析-Newtonsoft.Json 多線程-SmartThread ...


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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉自:http://www.cnblogs.com/metoy/p/4320813.html iptables簡介 netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決 ...
  • 作業需求: (1)運行程式輸出第一級菜單(2)選擇一級菜單某項,輸出二級菜單,同理輸出三級菜單(3)讓用戶選擇是否要退出(4)有返回上一級菜單的功能 1 data = { 2 "天津":{ 3 "南開區":{ 4 "南開大學":{ 5 "歷史系":{}, 6 "文學系":{}, 7 "英語系":{} ...
  • 服務端配置安裝 伺服器 第一步: 下載rsync 安裝包(線上安裝或者線下安裝) wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz tar -xzf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./con ...
  • Linux使用小Tips 整理些Linux些常遇到的問題。 修改網卡ens33為eth0 在使用RHEL和Centos7,發現網卡名稱變成了EnoX,挺不習慣。現更改回舊名稱eth0看著順眼。 1. 備份/etc/sysconfig/grub文件 2. 編輯/etc/sysconfig/grub文件 ...
  • 服務端 1 #!/bin/sh 2 # chkconfig: 2345 21 60 3 # description: Saves and restores system entropy pool for \ 4 #create by xiaohu 5 #2014.06.02 6 #This scri ...
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LINQ01 { class Program {... ...
  • 上一篇博客學習瞭如何簡單的使用多線程。其實普通的多線程確實很簡單,但是一個安全的高效的多線程卻不那麼簡單。所以很多時候不正確的使用多線程反倒會影響程式的性能。 下麵先看一個例子 : 執行結果: 從上面可以看出變數 num 的值不是連續遞增的,輸出也是沒有順序的,而且每次輸出的值都是不一樣的,這是因為 ...
  • using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApp1{ class Program { ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...