本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、毕业设计辅导
 当前位置:文章中心 >> Winform/客户端程序
HttpClient使用说明
夜鹰教程网 来源:www.yyjcw.com 日期:2017/1/6 23:16:25
分享到:
关于微软HttpClient使用,避免踩坑

这篇文章不能解决你的问题?可以加我们QQ在线指导技术

QQ:1416759661   新手QQ群:7835003  

在线解答|Demo制作|远程调试| 系统学习软件开发视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

最近公司对于WebApi的场景使用也越来越加大了,随之而来就是Api的客户端工具我们使用哪个?我们最常用的估计就是HttpClient,在微软类库中命名空间地址:System.Net.Http,是一个支持异步编程的API的SDK框架;我在公司开发项目时,查阅了一些资料对这个Client如何使用的更合理,最大的保障就是承受高频繁的客户端发起连接和线程安全,接下来我就简要说说如何合理使用。


一、普通场景使用(算是坑了)


先看一下代码: 


复制代码

1             while (true)

2             {

3                 using (HttpClient client = new HttpClient())

4                 {

5                     var result = client.GetStringAsync("http://www.xxxxx.com").Result;

6                     Console.WriteLine($"{result} > {DateTime.Now}");

7                 }

8             }

复制代码

以上代码请求必定在持续一段时间内会报错【大家在测试url地址时希望是内部局域网络】;


有人会说这个是单线程估计没意思,我想说的是,如果你多线程里用using可能测试出来没问题,但想想线程的开启对CPU来说是一笔不小的开销,所有真正压倒api访问的频率其实不是特别高频率了;


 


二、优化场景使用


1             HttpClient client = new HttpClient();//这里的client可以用单例模式进行预先初始化

2             while (true)

3             {

4                 var result = client.GetStringAsync("http://www.xxxx.com/").Result;

5                 Console.WriteLine($"{result} > {DateTime.Now}");

6             }

而且由于里面的异步方法是线程安全的,所以不用担心多线程使用问题!


 


2017.1.5


注意了DeleteAsync在高并发情况会出现问题,大家谨慎使用


 


三、关于DNS的BUG


我觉得这个问题,不是不可以解决,如果用Nginx我觉得就能暂时解决这个换IP迁移等问题;


在InfoQ上的对HttpClient的缺陷文章:http://www.infoq.com/cn/news/2016/09/HttpClient


 


题外话:关于最佳单例模式的写法


复制代码

        private static HttpClient client;

        public static HttpClient Singleton

        {

            get

            {

                if (client == null)

                {

                    Interlocked.CompareExchange(ref client,new HttpClient(),null);

                }

                return client;

            }

        }

复制代码


复制链接 网友评论 收藏本文 关闭此页
上一条: HttpWebRequest以及HttpWebRespon…  下一条: Winform为Combobox树添加数据

这篇文章不能解决你的问题?可以加我们QQ在线指导技术

QQ:1416759661   新手QQ群:7835003  

在线解答|Demo制作|远程调试| 系统学习软件开发视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

购买夜鹰教程网视频教程
  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  购买教程
  热点推荐
破解封路由的方法详解
技巧篇:只用这一招就能拒绝全部的…
挂马方法和技巧大汇总
网络安全防护:如何防止远程入侵
如何解决:系统开机就弹出广告网页…
彻底防御U盘病毒
安全配置交换机端口提高网络安全性…
浅析网络安全审计原理和技术(2)
用U盘就可以去除win XP管理员密码…
电脑硬盘各逻辑盘用鼠标左键双击它…
详解网站挂马的手段
新手认识;网银账号相关知识
ARP欺骗和ICMP欺骗催生全新DOS工具…
浅析网络安全审计原理和技术(1)
木马最基本的隐藏:不可见窗体和隐…
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs夜鹰教程祝福大家新年快乐
  最近更新
模拟登录人人网
HttpWebRequest以及HttpWebRespon…
HttpClient使用说明
Winform为Combobox树添加数据
C#之允许DataGridView选中整行
C#中DataGridView只能选择一行禁止…
为自动填充列调整大小期间不能执行…
c# winform设置listBox如何设置te…
c#的委托(代理)和事件
C# Task 任务计划
C# socket 多线程多管道可断点传送…
让ListBox的滚动条滚动到最底部
c#用事件模式实现通知
什么是异步编程,为什么会需要异…
c#开发电影售票系统
  工具下载  需要远程协助? 购买教程

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
vs2012 vs2008 vs2010 sql2008 sql2005
Asp.Net  

教程咨询QQ:1416759661


这篇文章不能解决你的问题?可以加我们QQ在线指导技术

QQ:1416759661   新手QQ群:7835003  

在线解答|Demo制作|远程调试| 系统学习软件开发视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

关于我们 | 广告投放 | 购买教程 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接 | 购买教程

Nighthawk Tutorials Network 快捷购买教程

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3

 

出售asp.net系列视频教程 高清原创版 每天晚上20:30--23:00在线 按照编号从简单到高级 http://www.yyjcw.com/list.html