新闻中心

C#怎么发起HTTP请求 C# HttpClient使用方法详解

2025-12-14
浏览次数:
返回列表
推荐使用HttpClient发起HTTP请求,它线程安全、支持异步且可复用;应全局复用实例避免端口耗尽;GET用GetStringAsync,POST用StringContent发送JSON;需设置请求头、超时并手动处理响应状态与异常。

c#怎么发起http请求 c# httpclient使用方法详解

在C#中发起HTTP请求,推荐且现代的方式是使用 HttpClient。它线程安全、支持异步、可复用,是.NET Core/.NET 5+ 中的首选HTTP客户端。别再用已过时的 WebClient 或难管理的 HttpWebRequest

创建和复用 HttpClient 实例

HttpClient 设计上**不是一次性对象**,频繁 new 会导致端口耗尽(Socket Exhaustion)。正确做法是全局复用一个实例(如用 static 字段或依赖注入):

  • 在控制台或简单场景中:声明为 static readonly HttpClient
  • 在ASP.NET Core中:通过 services.AddHttpClient() 注册,由DI容器管理生命周期
  • 避免在方法内 using var client = new HttpClient()(除非明确短时、低频调用)

发起 GET 请求(字符串响应)

最常用场景:获取API返回的JSON或文本:

  • GetStringAsync(url) 直接得到字符串(自动处理UTF-8解码)
  • GetAsync(url) 获取 HttpResponseMessage,可检查状态码、读取内容流、自定义头等

示例:

var json = await client.GetStringAsync("https://api.example.com/users");

发送 POST 请求(JSON数据)

向API提交结构化数据,通常用JSON:

Glarity Glarity

Glarity是一款免费开源的AI浏览器扩展,提供YouTube视频总结、网页摘要、写作工具等功能,支持免费的镜像翻译,电子邮件写作辅助,AI问答等功能。

Glarity 131 查看详情 Glarity
  • JsonSerializer.Serialize()(.NET Core 3.0+)或 System.Text.Json 序列化对象
  • 包装成 StringContent,指定 "application/json" 类型
  • 调用 PostAsync(url, content)

示例:

var data = new { Name = "张三", Age = 25 };
var json = JsonSerializer.Serialize(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.example.com/users", content);

设置请求头、超时与错误处理

实际项目中需关注健壮性:

  • 通过 client.DefaultRequestHeaders 添加通用头,如 AuthorizationUser-Agent
  • 超时用 client.Timeout = TimeSpan.FromSeconds(10);(注意:不能设为无限,也不能在请求中动态改)
  • 务必检查 response.IsSuccessStatusCode;非2xx响应不会自动抛异常,需手动处理
  • try/catch 捕获 HttpRequestException(网络失败、DNS错误等)

基本上就这些。掌握这四点,就能覆盖95%的HTTP调用需求。不复杂但容易忽略复用和异常细节。

以上就是C#怎么发起HTTP请求 C# HttpClient使用方法详解的详细内容,更多请关注其它相关文章!


# 也不  # 西藏seo服务加盟  # 妇联网站建设  # 外汇推广网站论坛  # 重庆正规的优化网站  # 抖音营销推广规划  # 属于SEO的优点是  # 罗湖网站优化推荐高中  # 滁州网站建设入门  # 株洲专业关键词排名优化  # 深圳seo培训学校  # 推荐使用  # 设为  # 如何在  # 就能  # js  # 操作指南  # 如何将  # 等功能  # 序列化  # 复用  # .net  # c#  # 状态码  # dns  # ai  # 端口  # app  # json 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法  《燕云十六声》两周内达九百万玩家!位居畅销榜第五  必由学登录入口 必由学官方网站在线访问链接  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践  QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址  使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战  ArrayList与LinkedList操作复杂度详解:遍历与修改  CSS图片焦点样式实现教程:理解与应用tabindex属性  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  在Pyomo中实现基于变量的条件约束:Big-M方法详解  Python实现多节点属性重叠度分析教程  c++20的std::jthread是什么_c++可中断线程与RAII式管理  小米Civi 4录制视频过暗_小米Civi 4亮度优化  Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  Django模型中自动计算可用余额的实现方法  京东单号查询入口_京东快递订单追踪入口  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  mysql备份恢复性能优化_mysql备份恢复性能优化方法  Flexbox布局实践:实现粘性导航栏与底部固定页脚  印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】  HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制  我的世界官方游戏入口 我的世界官网平台直达链接  抖音创作助手登录入口_抖音创作辅助工具官网直达  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画  可靠CSGO开箱平台解析 CSGO开箱网合集  Golang指针如何与map组合使用_Golang map指针组合实践  快手赚钱渠道_快手收益来源  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  Web Components中自定义开关组件状态同步的常见陷阱与解决方案  学习通在线学习平台 学习通网页版直接进入课程中心  漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  整合Supabase认证与Django模型:跨模式迁移的解决方案  excel如何生成目录 excel一键生成工作表目录超链接  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  解决Flask中Quill编辑器内容提交失败及TypeError的指南  QQ官网正版登录链接 QQ在线登录入口最新  html5 app怎么运行环境_配html5 app运行环境【教程】  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  如何使 Jest 模拟函数默认抛出错误以提高测试效率  深入理解J*aScript中的B样条曲线与节点向量生成  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】 

搜索