首页 > 编程语言 >C# 关于HttpClient的使用

C# 关于HttpClient的使用

时间:2023-08-22 11:35:44浏览次数:39  
标签:return C# apiLog headers 关于 var new message HttpClient

当我们在C#中调用RestApi通常有三种方式

HttpWebRequest 是一种相对底层的处理 Http request/response 的方式 已过时
WebClient 提供了对 HttpWebRequest 的高层封装,来简化使用者的调用 已过时
HttpClient 是一种新的处理 Http request/response 工具包,具有更高的性能 推荐使用

为什么推荐使用HttpClient

WebRequest

.NET Framework 中第一个用来处理 Http 请求的类,非常灵活。可以用来存取 headers, cookies, protocols 和 timeouts 等等。但灵活的同时也导致使用难度加大,各个开发都有自己的写法。

HttpWebRequest http =  (HttpWebRequest)WebRequest.Create("http://localhost:8081/api/default");
WebResponse response = http.GetResponse();
Stream memoryStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(memoryStream);
string data = streamReader.ReadToEnd();
WebClient

基于HttpWebRequest的封装,提供了使用便利性,但舍弃了部分性能。在只做简单api调用时优势很大。不太适用bgy各系统之间调用的千奇百怪鉴权。

using (var webClient = new WebClient()) { 
    var data = webClient.DownloadString("http://localhost:8081/api/default"); 
}
HttpClient

HttpClient 作为后来之物,它吸取了 HttpWebRequest 的灵活性及 WebClient 的便捷性,所以说

标签:return,C#,apiLog,headers,关于,var,new,message,HttpClient
From: https://www.cnblogs.com/xionghui23/p/17648097.html

相关文章

  • VSCode 配置 Conda 环境
    VSCode下载Python插件:在VSCode中使用CTRL+P打开搜索,然后输入>selectinterpreter:选择对应环境即可。运行代码后,可以在VSCode的终端发现自动输入了如下指令:......
  • std::allocator
    设计主要目的:减少malloc的cookie的开销设计主要方法:减少malloc的次数,用数据结构管理已经分配的内存。核心数据结构:free_list[16]存储16根链表头,free_list[i],0~15,free_list[i]管理(i+1)*16字节型区块。客户所需要内存块大小会被调整为16的倍数。流程:分配内存的时候先从战备......
  • 热风梳电吹风外销加拿大C22.2 NO.3认证办理流程
    热风梳电吹风是一种常见的家用电器,广泛应用于美容美发领域。如果你想将热风梳电吹风出口到加拿大,那么办理C22.2NO.3认证是必不可少的。本文将为你介绍热风梳电吹风出口加拿大C22.2NO.3认证的办理流程。首先,你需要了解C22.2NO.3认证的相关要求。C22.2NO.3是加拿大标准委员会(CSA)......
  • TCP的可靠性之道:确认重传和流量控制
    TCP全称为TransmissionControlProtocol(传输控制协议),是一种面向连接的、可靠的、基于字节流的传输层通信协议,其中可靠性是相对于其他传输协议的优势点。TCP为了确保数据传输的可靠性主要做了以下几点:发送确认机制丢包重传机制滑动窗口拥塞控制TCP的传输基于字节流,记录......
  • SocialLGN Light graph convolution network for social recommendation
    目录概SocialLGN代码LiaoJ.,ZhouW.,LuoF.,WenJ.,GaoM.,LiX.andZengJ.SocialLGN:Lightgraphconvolutionnetworkforsocialrecommendation.InformationSciences,2022.概LightGCN+Social.方法很简单,利于理解socialrecommendation.SocialLGN......
  • HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制LazyForEach数据懒加载
    LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了,框架会根据滚动容器可视区域按需创建组件,当组件划出可视区域外时,框架会进行组件销毁回收以降低内存占用。一、接口描述LazyForEach(dataSource:IDataSource,......
  • HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制LazyForEach数据懒加载
    LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了,框架会根据滚动容器可视区域按需创建组件,当组件划出可视区域外时,框架会进行组件销毁回收以降低内存占用。一、接口描述LazyForEach(dataSource:IDataSource,......
  • select语句(优化)
    MySQL常用30种SQL查询语句优化方法原创 good7ob good7ob 2023-08-1608:00 发表于江西收录于合集#数据库4个引言 在开发和维护MySQL数据库时,优化SQL查询语句是提高数据库性能和响应速度的关键。通过合理优化SQL查询,可以减少数据库的负载,提高查询效率,为用户提供更......
  • C++简介
    一、C++介绍本贾尼.斯特劳斯特卢普,于1979年在贝尔实验室负责分析UNIX系统内核流量的分布情况时,特别希望有一种更加模块化的工具,于1979.10开始着手研发一款新的编程语言,在C语言的基础上增加了面向对象的机制,也就是C++,1983年完成了C++的第一个版本C++与C的关联和重要区别:(面试题)......
  • a start job is running for udev wait for complete device initialization
    astartjobisrunningforudevwaitforcompletedeviceinitializationreference:https://github.com/AdnanHodzic/displaylink-debian/issues/331diff/etc/init.d/systemd-udevd+systemctlmasksystemd-udev-settleudevadmtrigger--action=addudevadmsett......