如果是以前,想要用。net 發起一個Http請求真的非常複雜,需要寫好幾十行程式碼才行,現在好了,開源社群裡面有幾款不錯的HTTP請求元件,這裡我推你進來看看,這裡的Demo我們就請求一個免費的API介面吧,我們先看看介面返回的資料
然後建立一個該json適配的類,你也可以用VS裡面自帶的將JSON貼上為類的功能,直接把根據json格式生成一個類,然後自己再稍加調整一下即可,這裡我建立了兩個類分別為ResultResponse和Result。
publicclassResultResponse { publicint code { get; set; } publicstring message { get; set; } public Result[] result { get; set; } } publicclassResult { publicstring sid { get; set; } publicstring text { get; set; } publicstring type { get; set; } publicstring thumbnail { get; set; } publicstring video { get; set; } publicobject images { get; set; } publicstring up { get; set; } publicstring down { get; set; } publicstring forward { get; set; } publicstring comment { get; set; } publicstring uid { get; set; } publicstring name { get; set; } publicstring header { get; set; } publicstring top_comments_content { get; set; } publicstring top_comments_voiceuri { get; set; } publicstring top_comments_uid { get; set; } publicstring top_comments_name { get; set; } publicstring top_comments_header { get; set; } publicstring passtime { get; set; } }
因為我這個類是自動生成的,所以命名風格有點怪,這裡就先忽略,但是實際應用中一定要注意這個問題。好了下面開始實踐各個請求庫了
refit
直接透過Nuget即可安裝
這裡我們新建一個名為IWebApi的介面:
publicinterfaceIWebApi { [Get(“/getJoke?page={page}&count={count}&type={video}”)] Task
這裡的Get是refit的特性之一,裡面的字串即為請求路徑和引數
現在,我們就去呼叫這個介面
[HttpGet(“joke”)] publicasync Task
就這樣簡單的使用就可以獲取我們介面的資訊了
refit為我們提供了很多特性,如果在請求時需要加Header,那麼可以使用Headers這個特性。
EasyHttp
這個開源庫已經很久沒有更新了
由於我演示是用的。net core 3。1,EasyHttp不支援Core,所以這裡就不演示了,我就在Github搬一些案例過來吧
var http = new HttpClient(); http。Request。Accept = HttpContentTypes。ApplicationJson; var response = http。Get(“url”); var customer = response。DynamicBody;
如果是。net framework是的同學,可以使用一下。
RestSharp
這個庫的熱度還是畢竟高,已經達到了7。5k star
這裡我們就先省略Nuget安裝,直接到示例編碼
[HttpGet(“joke”)] publicasync Task
這裡只是一個簡單的呼叫,它也提供了比較全面的工具方法,各位可以去官網瞭解一下
Flurl。Http
這個開源類庫使用起來也是非常方便的,它擴充套件了字串方法,在Nuget中安裝Flurl。Http
然後一句程式碼即可發起HTTP請求並序列化成物件
[HttpGet(“joke”)] publicasync Task
好了,這裡只是簡單的分享4款開源的http請求元件,使用的示例也是非常簡單,並沒有對這幾個元件進行對比分析,你們在使用之前請先自行實踐對比,進行最優選擇。