本来有个指纹采集功能做了个winFrom小程序 在本地测试都还能行,后来快上线的时候发现 客户用的阿里云数据库, 不对外公布 ,然后发现本地采集的数据没办法上传到数据库怎么办呢?

然后曲线救国,用webapi的方式在通过把数据上传到网站对数据库进行读写。  哈哈哈!!

然后之前用的都是HttpWebRequest ,不过这个在这里就不适用了,这里一个小小的get请求就写太多代码了,发现httpClient代码更少就偷个懒来学习下怎么使用httpClient

关于HttpWebRequest 我之前有讲过想了解的,看我的之前的博客http://www.cnblogs.com/dzhengyang/p/7099764.html

关于httpClient可以进行同步,也可以进行异步,楼主就是这里被坑了~~~

开始学习吧 上代码

首先是同步请求

  1. /// <summary>
  2. /// 获取门禁用户
  3. /// </summary>
  4. /// <returns></returns>
  5. public static string DoorAllList()
  6. {
  7. var result = "";
  8. string url = "http://www.baidu.com/Api/GetDoorUserList";
  9. //创建HttpClientHandler的AutomaticDecompression
  10. var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
  11. //创建一个httpClient;
  12. using (var client = new HttpClient(handler))
  13. {
  14. //同步请求
  15. var response = client.GetAsync(url);
  16. //在这里会等待response返回。
  17. var ret = response.Result;
  18. //最终等待返回结果
  19. result = ret.Content.ReadAsStringAsync().Result;
  20. }
  21. return result;
  22. }

同步没什么说的比较简单

异步请求

  1. /// <summary>
  2. /// 异步请求
  3. /// </summary>
  4. public static async void DoorAll()
  5. {
  6. var result = "";
  7. string url = "http://baidu/api/DoorApi/GetDoorUserList";
  8. //创建HttpClientHandler的AutomaticDecompression
  9. var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
  10. //创建一个httpClient;
  11. using (var client = new HttpClient(handler))
  12. {
  13. //异步请求
  14. var response =await client.GetAsync(url);
  15. //确保HTTP成功状态值
  16. response.EnsureSuccessStatusCode();
  17. //返回结果
  18. await response.Content.ReadAsStringAsync();
  19. }
  20. }

异步请求的方法要加关键字 async 然后在等待结果的时候要用关键字 await  如果不用关键字await就会有报错

这个坑要小心一点

好了今天就是我的进步了 总结到这里了

HttpClient笔记与踩过的坑的更多相关文章

  1. 《C++之那些年踩过的坑(二)》

    C++之那些年踩过的坑(二) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. 今天讲一个小点,虽然小,但如果没有 ...

  2. Django 踩过的坑(一)

    平台:win10 工具:cmd python3 刚刚学习Django搭建环境,网站还木有发布,就直接来了个大麻烦. 一切按着<Django 学习笔记(二)>这篇文章来的,在最后cmd运行服 ...

  3. nrf52832蓝牙开发踩过的坑

    接触nrf52832芯片已经有一段时间了,记录我踩过的坑.这些坑大多都补回来了,愿后来的开发者没有坑~ 先来点开胃小菜 一.环境问题 安装离线包遇到的错误--svdconv exited with a ...

  4. 项目中踩过的坑之-sessionStorage

    总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面 ...

  5. web开发实战--弹出式富文本编辑器的实现思路和踩过的坑

    前言: 和弟弟合作, 一起整了个智慧屋的小web站点, 里面包含了很多经典的智力和推理题. 其实该站点从技术层面来分析的话, 也算一个信息发布站点. 因此在该网站的后台运营中, 富文本的编辑器显得尤为 ...

  6. "开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"

    欢迎转载,请注明出处! https://gii16.github.io/learnmore/2016/07/29/problem.html 踩过的坑及解决方案记录在此篇博文中! 个人理解,如有偏颇,欢 ...

  7. 【转载】Fragment 全解析(1):那些年踩过的坑

    http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使 ...

  8. Redis Cluster踩过的坑

    Redis Cluster踩过的坑请参考如下链接:http://www.iteye.com/blogs/subjects/Redis_Cluster_Devops

  9. 第八篇:web之前端踩的一些坑

    前端踩的一些坑   前端踩的一些坑 本节内容 事件代理 清除标签的所有事件 bootstrap的模态框自定义方法 ajax在django里面实现post提交 ajax提交数据嵌套 1.事件代理 之前写 ...

随机推荐

  1. 关于Client_Abort_Exception异常的分析和解决

    1.什么情况下会出现“ClientAbortException:  java.net.socketException:  Broken pipe”? 答:客户端非正常(标准握手协议)退出连接,体现在h ...

  2. Linux下配置tomcat+apr+native应对高并发

    摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服 ...

  3. Example016实现下拉框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. CSS雪碧图自动生成软件

    下载地址 http://www.99css.com/1524/ 包含详细的下载地址.下载步骤以及使用教程 亮点:自动合成雪碧图+自动生成雪碧图background-position代码 简单过程 下载 ...

  5. Selenium的简单安装和使用

    Selenium的安装 pip install selenium Selenium模块需要调用浏览器,需要配置selenium的浏览器驱动 Firefox(火狐) 下载对应版本的geckdriver. ...

  6. 在Jekyll博客添加评论系统:gitment篇

    最近在Github Pages上使用Jekyll搭建了个人博客( jacobpan3g.github.io/cn ), 当需要添加评论系统时,找了一下国内的几个第三方评论系统,如"多说&qu ...

  7. Entity Framework Core 软删除与查询过滤器

    本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意 ...

  8. 学习java窗口基本操作时无聊写的

    学习java窗口基本操作时无聊写的 就当记录 代码如下: package day08; import java.awt.BorderLayout;import java.awt.Color;impor ...

  9. request.setcharacterencoding()和request.setcontenttype

    1.request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默 ...

  10. 简单谈谈js中的MVC

    MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器). 本文将用一个经典的例子todoList来展开(代码在最后). 一个事件发生的过程(通信单向流动): ...