C# Flurl 高性能的访问http

C# Flurl 高性能的访问http安装nuget搜索安装flurl.http使用varurl=”http://www.some-api.com”.AppendPathSegment(“login”).SetQueryParams(new{name=”Lee”,pwd=”123456″});//构造出来的url:https://www.som..

  1. 安装
    nuget 搜索安装flurl.http

  2. 使用

 var url = "http://www.some-api.com"
           .AppendPathSegment("login")
           .SetQueryParams(new
           { 
   
               name = "Lee",
               pwd = "123456" 
           });  
//构造出来的url:https://www.some-api.com/login?name=Lee&pwd=123456
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容器,你也可以在依赖注入中使用它。
在这里插入图片描述

今天的文章C# Flurl 高性能的访问http分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29926.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注