.NET集成DeveloperSharp實現http網路請求&與其它工具的比較

来源:https://www.cnblogs.com/digital-college/p/18214180
-Advertisement-
Play Games

爆了,爆了,DeveloperSharp系列近期又被製造業ERP、民航飛行App、建築BIM、電力掌上營業廳、等多家大型採用,站在巨人的肩膀上你能走的更遠。 支持.Net Core2.0及以上,支持.Net Framework4.0及以上 http請求調用是開發中經常會用到的功能。在內,調用自有項目 ...


 

爆了,爆了,DeveloperSharp系列近期又被製造業ERP、民航飛行App、建築BIM、電力掌上營業廳、等多家大型採用,站在巨人的肩膀上你能走的更遠。

 

支持.Net Core2.0及以上,支持.Net Framework4.0及以上

http請求調用是開發中經常會用到的功能。在內,調用自有項目的Web Api等形式介面時會用到;在外,調用一些第三方功能介面時,也會用到,因為,這些第三方功能往往是通過http地址的形式提供的,比如:簡訊服務、線上翻譯、地圖服務、語音智能、等…

 

http請求調用,又分為Post與Get兩種形式。

Post形式的請求相對複雜一些,也更常用,一旦弄明白它, Get形式一看便懂,故我們首先來看看Post形式的請求調用。

使用Post調用http,往往有四個參數需要設置:

(1)     調用地址

(2)     需要發送過去的參數

(3)     http請求頭(如果有設置)

(4)     編碼格式。常用的為:application/json

 

下麵給出一個使用第三方鏈接“發送簡訊”的代碼示例:

using DeveloperSharp.Framework.CoreUtility; //從NuGet引用DeveloperSharp包
using Newtonsoft.Json; //從NuGet引用Newtonsoft.Json包
--------------------------

        public static object SendMessage(string mobile, string code, string name)
        {
            //創建DeveloperSharp中的IUtility工具
            IUtility IU = new Utility();

            //調用地址
            string requestUrl = "https://prekaka.rainfn.com/kaka/api/v1/activity/uploadUserData";
            //需要發送的參數
            Dictionary<string, object> data = new Dictionary<string, object>
            {
                { "mobile",mobile },
                { "code",code},
                { "name",name}
            };

            //Post形式發送請求調用
            var responsesStr = IU.HttpPost(requestUrl, JsonConvert.SerializeObject(data), null, "application/json");
            object reData = JsonConvert.DeserializeObject<object>(responsesStr);
            return reData;
        }

上例因為沒有設置“http請求頭”,故HttpPost方法的第三個參數傳值為null。

 

HttpPost方法的詳細說明如下:

HttpPost(Async)
聲明:string HttpPost(string Url, string ParamData = "", Dictionary<string, string> HeaderDic = null, string ContentType = "application/x-www-form-urlencoded");
用途:調用Http-Post請求
參數:(1string Url             --  調用請求的url地址
     (2string ParamData      --  提交的參數
     (3)Dictionary<string, string> HeaderDic  --  存放http頭的鍵值對
     (4string ContentType   --  請求的編碼格式,通常有application/x-www-form-urlencoded(預設設置)、multipart/form-data、application/json三種形式
返回:String   --  請求結果(-107開頭表示出錯)

 

 

最後,我們來說說Get形式的請求調用。

Get形式往往用於url後帶問號“?N1=V1&N2=V2&N3=V3”這類的調用。這類調用的特點是:“需要發送的參數”直接掛在了“調用地址”後面。下麵直接給出一個示例,你一看便知:

using DeveloperSharp.Framework.CoreUtility; //從NuGet引用DeveloperSharp包
--------------------------

      IUtility ui = new Utility();
      string r = ui.HttpGet("http://localhost:1416/Handler1.ashx?name=kyyk&age=100");

 

☆與其它工具的比較

(1)有人可能會說,http調用還有Put、Delete、等類型。但實際開發中,我們只用Post/Get兩種就夠了。

(2)正是由於http請求調用是項目開發中如此重要的一環,市面上產生了很多相關工具,比:FlurXXX、RestSharXXX、HttpClieXXX、等等...

但本文的方案其實可以算得上是上述這些方案的理論基礎/底層。

上述一些工具,更多的是把本文方案中的“編碼格式”與“json序列化/反序列化”兩步給簡化包裝+集成,成為了PostJson、GetUrl、之類方法。但本文前面提到過,“編碼格式”Content-Type常用的有Json、x-www-form-urlencoded、form-data三種,它們只是常用的三種,事實上不止這三種(這是問題的核心所在!!)。

你現在能包裝成PostJson、PostUrl,PostData,後續更多的種類作者都包裝了麽?答案是:沒有!!

所以,從這個意義上說,上述那些工具在功能上是有缺陷的,遇到特殊情況它們處理不了!!

為了使功能完善+能處理所有情況的http請求調用,最好的方法,就是像本文方案那樣,把“編碼格式”Content-Type作為一個string參數顯露出來,讓開發者根據情況自己去填寫....(本文完)

 


關註下方公眾號,可以獲得名企內推。向大佬學習,探行業內幕,享時代機遇。


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

-Advertisement-
Play Games
更多相關文章
  • 自動篩選器是 Excel 中的一個基本但極其有用的功能,它可以讓你根據特定的條件來自動隱藏和顯示你的數據。當有大量的數據需要處理時,這個功能可以幫你快速找到你需要的信息,從未更加有效地分析和處理相關數據。 下麵將介紹如何使用免費.NET Excel庫在Excel中添加、應用和刪除自動篩選器。包含以下 ...
  • 最近YOLO家族又添新成員:YOLOv10,YOLOv10 提出了一種一致的雙任務方法,用於無nms訓練的YOLOs,它同時帶來了具有競爭力的性能和較低的推理延遲。此外,還介紹了整體效率-精度驅動的模型設計策略,從效率和精度兩個角度對YOLOs的各個組成部分進行了全面優化,大大降低了計算開銷,增強了... ...
  • 不管是在控制台程式還是asp.net core程式中,我們經常會有用到一個需要長時間運行的後臺任務的需求。通常最直覺的方式是使用Thread實例來新建一個線程,但是這樣需要自行管理線程的啟動和停止。 在.net core中提供了一個繼承自IHostedService的基類BackgroudServi ...
  • 可以使用XmlSerializer直接序列化和反序列化xml 反序列化如以下代碼 private T? XmlDeseriallize<T>(string filePath) { XmlSerializer serializer = new XmlSerializer(typeof(T)); usi ...
  • Web Service 理解:Web Service 是一種基於網路的服務,它使用標準化的消息傳遞協議,最典型的是基於 SOAP(Simple Object Access Protocol)協議。SOAP 使用 XML 格式封裝數據,定義了消息的結構和傳輸方式,因此它是一個重量級的解決方案。Web ...
  • 工廠模式(Factory Pattern)是一種創建型設計模式,它提供了一種創建對象的介面,而不是通過具體類來實例化對象。工廠模式可以將對象的創建過程封裝起來,使代碼更具有靈活性和可擴展性。 工廠模式有幾種常見的實現方式: 簡單工廠模式(Simple Factory Pattern): 簡單工廠模式 ...
  • 一:背景 1. 講故事 前些天群里有一個朋友說他們軟體會偶發崩潰,想分析看看是怎麼回事,所幸的是自己會抓dump文件,有了dump就比較好分析了,接下來我們開始吧。 二:WinDbg 分析 1. 程式為什麼會崩潰 windbg 還是非常強大的,當你雙擊打開的時候會自動幫你定位過去展示崩潰時刻的寄存器 ...
  • StackExchange.Redis 是一個高性能的 Redis 客戶端庫,主要用於 .NET 環境下與 Redis 伺服器進行通信,大名鼎鼎的stackoverflow 網站就使用它。它使用非同步編程模型,能夠高效處理大量請求。支持 Redis 的絕大部分功能,包括發佈/訂閱、事務、Lua 腳本等... ...
一周排行
    -Advertisement-
    Play Games
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...