如何在 .NET 中使用 Flurl 高效处理Http请求
简介
官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件。
Url构建
现在有一个登录的接口,地址如下:
https://www.some-api.com/login?name=Lee&pwd=123456
我们在处理这个地址的时候,会拼接 login,然后拼接?号,然后拼接参数,中间还要拼接& 得到最终的地址。
使用 Flurl 构建,首先需要通过 Nuget 安装 Flurl 组件。
var url = "http://www.some-api.com"
.AppendPathSegment("login")
.SetQueryParams(new
{
name = "Lee",
pwd = "123456"
});
这很简单,这是最简单的Get请求,同样的我们也可以使用 Uri 的扩展方法
var url = new Uri("http://www.some-api.com").AppendPathSegment(...
Http 增强
Flurl 是模块化的,所以还需要安装 Flurl.Http
using Flurl;
using Flurl.Http;
var result = await "http://www.some-api.com".AppendPathSegment("login").GetAsync();
上面的代码会发送一个GET请求,并返回一个IFlurlResponse,可以得到 StatusCode,Headers等,也可以通过 GetStringAsync 和 GetJsonAsync 得到响应内容。
如果只是想获取响应内容,我们看看 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 });
动态类型 dynamic
dynamic d = await "http://api.foo.com".GetJsonAsync();
设置请求标头:
await url.WithHeader("Accept", "text/plain").GetJsonAsync();
await url.WithHeaders(new { Accept = "text/plain", User_Agent = "Flurl" }).GetJsonAsync();
基础身份验证
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 管理
我们通常不会创建太多的 HttpClient, 过多的连接会耗尽服务器资源,通常会抛出 SocketException 异常,大部分还是使用 HttpClientFactory。
在 Flurl 库中,它是内部管理 HttpClient实例, 通常一个主机Host,会创建一个HttpClient,然后缓存来复用。
Flurl 也很好的支持了IOC容器,你也可以在依赖注入中使用它。
总结
Flurl 组件让Http操作变得更简单易用,你可以在项目中尝试使用它,其他的还有一些功能,可测试可配置等,你都可以在官网找到它的文档
以上就是如何在 .NET 中使用 Flurl 高效处理Http请求的详细内容,更多关于.NET 中使用 Flurl 处理Http请求的资料请关注脚本之家其它相关文章!
- ASP.NET Core扩展库之Http通用扩展库的使用详解
- ASP.NET Core扩展库之Http日志的使用详解
- 如何在ASP.NET Core中使用HttpClientFactory
- 在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求
- 在ASP.NET Core中应用HttpClient获取数据和内容
- 在ASP.NET Core5.0中访问HttpContext的方法步骤
- .NET CORE HttpClient的使用方法
- ASP.NET Core中的Http缓存使用
- .net Core 使用IHttpClientFactory请求实现
- .NET Core使用HttpClient进行表单提交时遇到的问题
- .Net Core下HTTP请求IHttpClientFactory示例详解
相关文章
asp.net 操作XML 按指定格式写入XML数据 WriteXml
从SQL下载数据到本地为XML文件2009-07-07
asp.net SqlParameter如何根据条件有选择的添加参数
有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数,下面有个示例,大家可以参考下2014-06-06
.net全局定时定期执行某些操作在Global.asax中具体实现
全局定时定期执行某些操作看起来是多么自动化的一个问题不过在.net的Global.asax文件中稍微配置即可实现,详细配置如下,感兴趣的朋友可以参考下哈2013-04-04
.NET集成DeveloperSharp实现高效分页与无主键分页
DeveloperSharp系列近期又被制造业ERP、民航飞行App、建筑BIM、电力掌上营业厅、等多家大型采用,站在巨人的肩膀上你能走的更远,这篇文章主要介绍了.NET集成DeveloperSharp实现高效分页与无主键分页,需要的朋友可以参考下2024-06-06
asp.net request.PathInfo实现的url重写
最近对在开始研究url重写,对重写的原理以及重写之后引起的性能问题是研究的重点,研究过程中发现了一种轻便的“url重写方案”2009-04-04
Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
这篇文章主要给大家介绍了Asp.Net服务器发送HTTP标头后无法设置内容类型问题的解决方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。2017-05-05


最新评论