Flurl 组件使用
简介
先发上官网地址:https://flurl.dev/
Flurl 是一个异步的、可测试的、可移植的、URL 构建器和 .NET 的 HTTP 客户端库;Flurl 在NuGet上可用,可免费用于商业用途。它可以在各种平台上运行,包括 .NET Framework、.NET Core、Xamarin 和 UWP。
它能解决什么痛点
日常服务端调用接口,大都是通过HttpHelper实现,如果没有类库要不自己手敲要不网上找,显得我们技术很low,Flurl就完美解决这个问题。举个简单例子
T poco = "http://api.foo.com".GetJsonAsync<T>();
就是这么简单,直接返回泛型对象;
安装
通过nuget就可以安装,或者去官网下载后引用即可;
最佳实践
官网例子已经很全面了,懒得翻就看我的
Post请求
var response = "www.baidu.com"
.WithHeader("content-type", "application/x-www-form-urlencoded") //可以继续增加Header参数
.PostUrlEncodedAsync(new { name = "i am name"}) //post 开头就是post请求,反之亦然
//x-www-form-urlencoded 需要使用 PostUrlEncodedAsync
//form-data 需要使用 PostMultipartAsync
.ReceiveJson<tt2>(); //post请求接受
response.Wait(); //异步等待结果返回
Get请求
var response2 = "www.baidu.com"
点击查看代码
var response2 = "www.baidu.com"
.SetQueryParams(new { name="i am name"}) //QueryString参数
.WithHeader("Authorization", "Bearer dsafadsfadsfasdfasdf==") //Bearer 认证
.GetJsonAsync<tt3>(); //get请求返回
response2.Wait();
.SetQueryParams(new { name="i am name"}) //QueryString参数
.WithHeader("Authorization", "Bearer dsafadsfadsfasdfasdf==") //Bearer 认证
.GetJsonAsync<tt3>(); //get请求返回
response2.Wait();
特殊自定义请求
public class MyCustomHttpClientFactory : DefaultHttpClientFactory
{
public override HttpMessageHandler CreateMessageHandler()
{
var client = base.CreateMessageHandler() as HttpClientHandler;
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Proxy = new System.Net.WebProxy(); //new 一个新的代理
client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials; //使用默认的代理
return client;
}
}
var response333 = new FlurlClient()
.Configure(x =>
{
//配置特殊 HttpClient ,放置抛 407 代理错误
x.HttpClientFactory = new MyCustomHttpClientFactory();
}).Request("http://www.baidu.com", "?name=i am name")
//Request比较特殊,第一个参数必须Uri.IsValid()通过
//包含协议,域名
.WithBasicAuth("account", "password") // basic auth认证
.GetJsonAsync<tt4>();
response333.Wait();
Flurl 组件使用的更多相关文章
- 在 .NET 中使用 Flurl 高效处理Http请求
简介 官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件. Url构建 现在有一个登录的接口,地址如下: https://www.some-api ...
- 转载使用Flurl制作可复用的分页组件
使用Flurl制作可复用的分页组件 使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这 ...
- ASP.NET:使用Flurl制作可复用的分页组件
使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这么用.分页的逻辑本来就不复杂,更重要 ...
- ExtJS 4.2 评分组件
上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- react-router 组件式配置与对象式配置小区别
1. react-router 对象式配置 和 组件式配置 组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...
- Angular2入门系列教程3-多个组件,主从关系
上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...
- Angular2入门系列教程2-项目初体验-编写自己的第一个组件
上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...
- .NET Core 首例 Office 开源跨平台组件(NPOI Core)
前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
随机推荐
- 穿透的switch语句-循环概述与基本组成部分
穿透的switch语句 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束. pu ...
- freeswitch号码黑名单
概述 freeswitch是一款简单好用的的VOIP开源软交换平台. 在客户的呼叫过程中,会遇到一些异常的号码,包括高投诉风险号码.敏感号码.特殊号码等. 在客户呼叫流程中,需要针对这些异常号码做呼叫 ...
- 精美的web前端源码的特效
1.JS自定义烟花特效 这是一款基于JS和Canvas的自定义烟花特效,初始化界面的时候特效是不带声效的绽放,当你点击顶部中间的播放,即可以看到美丽的烟火也可以听到烟花绽放的声音,让你脑海浮现过年团圆 ...
- Quartz.NET 任务调度框架的demo实例
1.新建项目 简单实例,新建一个控制台程序 2.Nuget安装Quartz 3.编写代码 using Quartz; using Quartz.Impl; using Quartz.Logging; ...
- Cesium viewer.extend 五个拓展(五)
2023-01-09 1.viewerDragDropMixin 一个mixin,它为查看器小部件添加了对CZML文件的默认拖放支持. czml即为json,但json不一定为czml:如同geojs ...
- JZOJ 5415. 【NOIP2017提高A组集训10.22】公交运输
题目 城市中有一条长度为 \(n\) 的道路,每隔 \(1\) 的长度有一个公交车站,编号从 \(0\) 到 \(n\),学校在 \(0\) 号车站的位置.其中每个公交车站(除了 \(n\) 号车站) ...
- 免杀之:Python加载shellcode免杀
免杀之:Python加载shellcode免杀 目录 免杀之:Python加载shellcode免杀 1 Python 加载Shellcode免杀 使用Python可以做一些加密.混淆,但使用Pyth ...
- 添加 Echarts bi库
1.安装库和依赖 npm i echarts --save npm i ngx-echarts --save npm i resize-observer-polyfill --save-dev 2.相 ...
- 简述traceroute命令的原理
原理 traceroute命令是一种用于显示数据包从源主机到目的主机经过的路由器和网络设备的路径的工具.traceroute命令的原理是利用IP数据报的生存时间(TTL)字段和因特网控制报文协议(IC ...
- SystemVerilog Tutorial
来自网站 1.网站说明-tutorial This SystemVerilog tutorial is written to help engineers with background in Ver ...