iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#如何使用HttpClient
  • 131
分享到

C#如何使用HttpClient

2023-06-25 17:06:39 131人浏览 八月长安
摘要

这篇文章给大家分享的是有关C#如何使用HttpClient的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。错误使用New HttpClient如下面一段代码,日常开发中经常使用的 call http 方式,每次 n

这篇文章给大家分享的是有关C#如何使用HttpClient的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    错误使用

    New HttpClient

    如下面一段代码,日常开发中经常使用的 call http 方式,每次 new 一个 HttpClient

    using(var client = new HttpClient())

    先来做一个简单的测试,循环 call 一个 url ,代码如下

    public async Task<string> GetXXXUrlAsync(string url) {     var html = "";     for (var i = 0; i < 20; i++)     {          using (var client = new System.net.Http.HttpClient())          {             var result=await client.GetStringAsync(url);             html += result;           }     }     return html; }

    运行项目输出结果后,通过 netstate 查看下 tcp 连接情况

    C:\windows\System32> netstat

    虽然项目已经运行结束,但是连接依然存在,状态为" TIME_WAIT"(继续等待看是否还有延迟的包会传输过来;默认在 windows 下,TIME_WAIT 状态将会使系统将会保持该连接 240s。在高并发的情况下,连接来不及释放,Socket 被耗尽,耗尽之后就会出现喜闻乐见的一个错误。

    C#如何使用HttpClient

    错误原因,对象所占用资源应该确保及时被释放掉,但是,对于网络连接而言,这是错误的,原因有如下:

    • 网络连接是需要耗费一定时间的,频繁开启与关闭连接,性能会受影响

    • 开启网络连接时会占用底层 socket 资源,但在 HttpClient 调用其本身的 Dispose 方法时,并不能立刻释放该底层 socket 资源,这意味着程序可能会因为耗尽连接资源而产生灾难性的问题

    对于上面的错误,大家可能会想到使用静态单例模式的 HttpClient,接着往下看

    static HttpClient

    private static HttpClient Client = new HttpClient();

    静态单例模式虽然可以解决上面问题,但是会带来另外一个问题:DNS 变更会导致不能解析,DNS 不会重新加载,需要重启才能变更。(这样演示相对负复杂,有兴趣的可以去尝试一下)

    正确使用

    HttpClientFactory 以模块化、可命名、可配置、弹性方式重建了 HttpClient 的使用方式,由 DI 框架注入 IHttpClientFactory 工厂,由工厂创建 HttpClient 并从内部的 Handler 池分配请求 Handler 。

    HttpClientFactory 创建的 HttpClient,也即是 HttpClientHandler,只是这些个 HttpClien t被放到了“池子”中,工厂每次在 create 的时候会自动判断是新建还是复用 (默认生命周期为2min)。

    C#如何使用HttpClient

    .net core 2.1 开始引入了 IHttpClientFactory 工厂类来自动管理 IHttpClientFactory 类的创建和资源释放,可以通过 ioc 注入方式进行使用

    services.AddControllers();services.AddHttpClient();

    IHttpClientFactory 使用方法,简略代码如下

    private readonly IHttpClientFactory _clientFactory;public HomeController(IHttpClientFactory clientFactory){    _clientFactory = clientFactory;}public async Task<string> GetBaiduAsync(string url){    var client = _clientFactory.CreateClient();    var result = await client.GetStringAsync(url);    return result;}

    感谢各位的阅读!关于“C#如何使用HttpClient”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    --结束END--

    本文标题: C#如何使用HttpClient

    本文链接: https://www.lsjlt.com/news/306163.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C#如何使用HttpClient
      这篇文章给大家分享的是有关C#如何使用HttpClient的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。错误使用New HttpClient如下面一段代码,日常开发中经常使用的 call http 方式,每次 n...
      99+
      2023-06-25
    • 如何使用angular的HttpClient搭配rxjs
      小编给大家分享一下如何使用angular的HttpClient搭配rxjs,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、原H...
      99+
      2024-04-02
    • ASP.NET Core如何使用HttpClient调用WebService
      本文小编为大家详细介绍“ASP.NET Core如何使用HttpClient调用WebService”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core如何使用HttpClient调用WebServi...
      99+
      2023-06-29
    • Java服务RestTemplate与HttpClient如何使用
      这篇“Java服务RestTemplate与HttpClient如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Jav...
      99+
      2023-07-02
    • java中如何使用HttpClient调用接口
      目录java使用HttpClient调用接口HttpClient 提供的主要的功能直接言归正传了!!!!上代码java的HttpClient调用远程接口使用方法实例java使用Htt...
      99+
      2022-11-13
      java使用HttpClient HttpClient调用接口 java HttpClient
    • C#多线程TPL模式下使用HttpClient
      一、引言 我们有时侯需要在程序里面调用Http接口、请求http资源、编写http爬虫等的时候都需要在程序里面进行Http请求。很多人习惯的WebClient、HttpWebRequ...
      99+
      2024-04-02
    • 如何在java中使用HttpClient处理错误
      如何在java中使用HttpClient处理错误?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可...
      99+
      2023-06-14
    • C#中HttpClient使用注意事项有哪些
      小编给大家分享一下C#中HttpClient使用注意事项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在测试一个第三方API,准备集成在我们的网站应用中...
      99+
      2023-06-29
    • 如何使用HttpClient和HtmlParser实现简易爬虫
      这篇文章给大家分享的是有关如何使用HttpClient和HtmlParser实现简易爬虫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   HttpClient 简介   H...
      99+
      2024-04-02
    • HttpClient jar包使用详解
      HttpClient是一个开源的HTTP客户端工具包,用来进行HTTP通信。它可以用来发送HTTP请求和接收HTTP响应,支持HTT...
      99+
      2023-09-15
      HttpClient
    • 如何使用apache的HttpClient进行http通讯
      这篇文章主要讲解了“如何使用apache的HttpClient进行http通讯”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用apache的HttpC...
      99+
      2024-04-02
    • 如何在HTTP协议接口测试中使用HttpClient
      本篇文章为大家展示了如何在HTTP协议接口测试中使用HttpClient,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、GET请求: GET请求时,参数一般是写在链接上的,代码如下:public&...
      99+
      2023-05-31
      http httpclient
    • C#使用HttpClient的正确方式你了解吗
      目录错误使用New HttpClientstatic HttpClient正确使用错误使用 New HttpClient 如下面一段代码,日常开发中经常使用的 call http 方...
      99+
      2024-04-02
    • C#中HttpClient使用注意(预热与长连接)
      最近在测试一个第三方API,准备集成在我们的网站应用中。API的调用使用的是.NET中的HttpClient,由于这个API会在关键业务中用到,对调用API的整体响应速度有严格要求,...
      99+
      2024-04-02
    • Java如何使用HTTPclient访问url获得数据
      目录使用HTTPclient访问url获得数据1、使用get方法取得数据2、使用POST方法取得数据使用httpclient后台调用url方式使用HTTPclient访问url获得数...
      99+
      2024-04-02
    • ASP.NETCore使用HttpClient调用WebService
      一、创建WebService 我们使用VS创建一个WebService,增加一个PostTest方法,方法代码如下 using System.Web.Services; names...
      99+
      2024-04-02
    • Java HttpClient怎么使用
      今天小编给大家分享一下Java HttpClient怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、导入...
      99+
      2023-07-02
    • .NET HttpClient简单使用教程
      创建一个名为HttpClientTest的Web API项目 新建Clients文件夹,用于存放自定义的HttpClient 在Clients下新建一个MyHttpClient类...
      99+
      2024-04-02
    • Java原生HttpClient怎么使用
      这篇文章主要介绍“Java原生HttpClient怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java原生HttpClient怎么使用”文章能帮助大家解决问题。1.信任证书管理类packa...
      99+
      2023-06-29
    • 怎么使用HttpClient和OkHttp
      这篇文章主要讲解了“怎么使用HttpClient和OkHttp”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用HttpClient和OkHttp”吧!使用HttpClient和OkHt...
      99+
      2023-06-16
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作