zoukankan      html  css  js  c++  java
  • HttpClient笔记与踩过的坑

      本来有个指纹采集功能做了个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就会有报错

     这个坑要小心一点 

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

  • 相关阅读:
    共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
    Python Django Ajax 传递列表数据
    Python Django migrate 报错解决办法
    Python 创建字典的多种方式
    Python 两个list合并成一个字典
    Python 正则 re.sub替换
    python Django Ajax基础
    Python Django 获取表单数据的三种方式
    python Django html 模板循环条件
    Python Django ORM 字段类型、参数、外键操作
  • 原文地址:https://www.cnblogs.com/dzhengyang/p/7353623.html
Copyright © 2011-2022 走看看