如何在 .NET 中使用 Flurl 高效處理Http請求
簡介
官方介紹,F(xiàn)lurl是一個現(xiàn)代的,流利的,支持異步的,可測試的,可移植的,URL增強(qiáng)和Http客戶端組件。
Url構(gòu)建
現(xiàn)在有一個登錄的接口,地址如下:
https://www.some-api.com/login?name=Lee&pwd=123456
我們在處理這個地址的時候,會拼接 login,然后拼接?號,然后拼接參數(shù),中間還要拼接& 得到最終的地址。
使用 Flurl 構(gòu)建,首先需要通過 Nuget 安裝 Flurl 組件。
var url = "http://www.some-api.com"
.AppendPathSegment("login")
.SetQueryParams(new
{
name = "Lee",
pwd = "123456"
});
這很簡單,這是最簡單的Get請求,同樣的我們也可以使用 Uri 的擴(kuò)展方法
var url = new Uri("http://www.some-api.com").AppendPathSegment(...
Http 增強(qiáng)
Flurl 是模塊化的,所以還需要安裝 Flurl.Http
using Flurl;
using Flurl.Http;
var result = await "http://www.some-api.com".AppendPathSegment("login").GetAsync();
上面的代碼會發(fā)送一個GET請求,并返回一個IFlurlResponse,可以得到 StatusCode,Headers等,也可以通過 GetStringAsync 和 GetJsonAsync 得到響應(yīng)內(nèi)容。
如果只是想獲取響應(yīng)內(nèi)容,我們看看 Flurl 有多簡單:
T poco = await "http://api.foo.com".GetJsonAsync<T>(); string text = await "http://site.com/readme.txt".GetStringAsync(); byte[] bytes = await "http://site.com/image.jpg".GetBytesAsync(); Stream stream = await "http://site.com/music.mp3".GetStreamAsync();
Post提交
await "http://api.foo.com".PostJsonAsync(new { a = 1, b = 2 });
動態(tài)類型 dynamic
dynamic d = await "http://api.foo.com".GetJsonAsync();
設(shè)置請求標(biāo)頭:
await url.WithHeader("Accept", "text/plain").GetJsonAsync();
await url.WithHeaders(new { Accept = "text/plain", User_Agent = "Flurl" }).GetJsonAsync();
基礎(chǔ)身份驗證
await url.WithBasicAuth("username", "password").GetJsonAsync();
OAuth 2.0
await url.WithOAuthBearerToken("mytoken").GetJsonAsync();
表單提交
await "http://site.com/login".PostUrlEncodedAsync(new {
user = "user",
pass = "pass"
});
HttpClient 管理
我們通常不會創(chuàng)建太多的 HttpClient, 過多的連接會耗盡服務(wù)器資源,通常會拋出 SocketException 異常,大部分還是使用 HttpClientFactory。
在 Flurl 庫中,它是內(nèi)部管理 HttpClient實例, 通常一個主機(jī)Host,會創(chuàng)建一個HttpClient,然后緩存來復(fù)用。
Flurl 也很好的支持了IOC容器,你也可以在依賴注入中使用它。
總結(jié)
Flurl 組件讓Http操作變得更簡單易用,你可以在項目中嘗試使用它,其他的還有一些功能,可測試可配置等,你都可以在官網(wǎng)找到它的文檔
以上就是如何在 .NET 中使用 Flurl 高效處理Http請求的詳細(xì)內(nèi)容,更多關(guān)于.NET 中使用 Flurl 處理Http請求的資料請關(guān)注腳本之家其它相關(guān)文章!
- ASP.NET Core擴(kuò)展庫之Http通用擴(kuò)展庫的使用詳解
- ASP.NET Core擴(kuò)展庫之Http日志的使用詳解
- 如何在ASP.NET Core中使用HttpClientFactory
- 在ASP.NET Core中用HttpClient發(fā)送POST, PUT和DELETE請求
- 在ASP.NET Core中應(yīng)用HttpClient獲取數(shù)據(jù)和內(nèi)容
- 在ASP.NET Core5.0中訪問HttpContext的方法步驟
- .NET CORE HttpClient的使用方法
- ASP.NET Core中的Http緩存使用
- .net Core 使用IHttpClientFactory請求實現(xiàn)
- .NET Core使用HttpClient進(jìn)行表單提交時遇到的問題
- .Net Core下HTTP請求IHttpClientFactory示例詳解
相關(guān)文章
asp.net利用后臺實現(xiàn)直接生成html分頁的方法
這篇文章主要介紹了asp.net利用后臺實現(xiàn)直接生成html分頁的方法,比較簡潔實用,需要的朋友可以參考下2014-08-08
asp.net 操作XML 按指定格式寫入XML數(shù)據(jù) WriteXml
從SQL下載數(shù)據(jù)到本地為XML文件2009-07-07
asp.net SqlParameter如何根據(jù)條件有選擇的添加參數(shù)
有時候?qū)憇ql語句的時候會根據(jù)方法傳進(jìn)來的參數(shù)來判斷sql語句中where條件的參數(shù),下面有個示例,大家可以參考下2014-06-06
.net全局定時定期執(zhí)行某些操作在Global.asax中具體實現(xiàn)
全局定時定期執(zhí)行某些操作看起來是多么自動化的一個問題不過在.net的Global.asax文件中稍微配置即可實現(xiàn),詳細(xì)配置如下,感興趣的朋友可以參考下哈2013-04-04
獲取轉(zhuǎn)向地址的URL的源文件(可自定義REFER)
獲取轉(zhuǎn)向地址的URL的源文件(可自定義REFER)...2006-09-09
.NET集成DeveloperSharp實現(xiàn)高效分頁與無主鍵分頁
DeveloperSharp系列近期又被制造業(yè)ERP、民航飛行App、建筑BIM、電力掌上營業(yè)廳、等多家大型采用,站在巨人的肩膀上你能走的更遠(yuǎn),這篇文章主要介紹了.NET集成DeveloperSharp實現(xiàn)高效分頁與無主鍵分頁,需要的朋友可以參考下2024-06-06
asp.net request.PathInfo實現(xiàn)的url重寫
最近對在開始研究url重寫,對重寫的原理以及重寫之后引起的性能問題是研究的重點,研究過程中發(fā)現(xiàn)了一種輕便的“url重寫方案”2009-04-04
Asp.Net服務(wù)器發(fā)送HTTP標(biāo)頭后無法設(shè)置內(nèi)容類型的問題解決
這篇文章主要給大家介紹了Asp.Net服務(wù)器發(fā)送HTTP標(biāo)頭后無法設(shè)置內(nèi)容類型問題的解決方法,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05

