zoukankan      html  css  js  c++  java
  • Net Core 的公共组件之 Http 请求客户端

    Net Core 的公共组件之 Http 请求客户端

    想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 POST 了,那下面开始讲解对于 Http 请求客户端的简单封装。

         首先,说一个好消息 就是 .Net Core 已将之前的 System.Net.Http 组件默认添加到了 NETStandard.Library 库中,所以直接用就好了,不需要再额外在 Nuget 上安装了,说道 Nuget 后续计划会有一篇文章介绍 Nuget 包的生成以及上传发布的文章,近期会整理发布。

    该 Http 请求客户端取名 HttpReqeustClient 内部暂时使用 HttpClient (既 System.Net.Http 组件中的),暂时实现以下功能。

    • 根据 url 发送 GET 请求获取响应的文本;
    • 根据 url 发送 GET 请求获取响应的二进制数组;(用于文件下载场景)
    • 根据 url 发送 POST 请求获取响应的文本。
      • Dictionary<string, string> postData 参数;
      • HttpPostDataDictionary postData 参数。(可以指定普通文本类型和文件类型)
      • 后续做微信SDK时会添加 Object 参数,直接序列化成 JSON 字符串提交;
    • 添加 Http 请求头、添加请求 Cookies 、添加请求所使用的证书等。

    HttpPostDataType  Http 提交数据类型类,用于指定提交的数据是 文本 还是 文件。

     View Code

    HttpPostDataDictionary Http 提交数据字典,要提交的数据字典该字典会包括普通文本或文件类型等数据。

     View Code

    里面提供有添加文本、添加文件等公共方法。

    好了,最主要的 HttpReqeustClient 类提供一下

    公共属性

    复制代码
    /// <summary>
    /// 获取当前请求使用的 <see cref="HttpClient"/> 实例。
    /// </summary>
    public HttpClient HttpClient { get; private set; }
    
    /// <summary>
    /// 获取包含状态码和数据的 HTTP 相应消息。
    /// </summary>
    public HttpResponseMessage HttpResponseMessage { get; private set; }
    
    /// <summary>
    /// 获取Http请求头集合。
    /// </summary>
    public Dictionary<string, string> Headers { get; }
    
    /// <summary>
    /// 获取或设置Cookie集合容器。
    /// </summary>
    public CookieContainer CookieContainer { get; set; }
    
    /// <summary>
    /// 获取或设置要使用的安全证书。
    /// </summary>
    public X509Certificate Certificate { get; set; }
    复制代码

    方法签名

    复制代码
    /// <summary>
    /// 根据 <paramref name="url"/> 发送 GET 请求获取响应的文本。
    /// </summary>
    /// <param name="url">要请求的 url 地址。</param>
    /// <returns>服务器响应的文本。</returns>
    public string HttpGetString(string url)
    
    /// <summary>
    /// 根据 <paramref name="url"/> 发送 GET 请求获取响应的二进制数组。
    /// </summary>
    /// <param name="url">要请求的 url 地址。</param>
    /// <returns>服务器响应的二进制数组。</returns>
    public byte[] HttpGetBytes(string url)
    
    /// <summary>
    /// 根据 <paramref name="url"/> 发送 POST 请求获取响应的文本。
    /// </summary>
    /// <param name="url">要请求的 url 地址。</param>
    /// <param name="postData">要发送的数据。</param>
    /// <returns>服务器响应的文本。</returns>
    public string HttpPost(string url, Dictionary<string, string> postData)
    
    /// <summary>
    /// 根据 <paramref name="url"/> 发送 POST 请求获取响应的文本。
    /// </summary>
    /// <param name="url">要请求的 url 地址。</param>
    /// <param name="postData">要发送的数据。</param>
    /// <returns>服务器响应的文本。</returns>
    public string HttpPost(string url, HttpPostDataDictionary postData)
    
    /// <summary>
    /// 根据 <paramref name="url"/> 发送 POST 请求获取响应的文本。
    /// </summary>
    /// <param name="url">要请求的 url 地址。</param>
    /// <param name="httpContent">HTTP 实体正文对象。</param>
    /// <returns>服务器响应的文本。</returns>
    public string HttpPost(string url, HttpContent httpContent)
    复制代码

    一个技术汪的开源梦 —— 目录

    未完待续。

    下篇预告:一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之字符串加密 & Http 请求参数签名

    -------------------------------------------------------------

  • 相关阅读:
    Vue之利用vueRouter的元信息实现页面的缓存
    Vue之directives所遇小bug
    《CSS世界》读书笔记
    git 错误error: failed to push some refs to
    v-text指令消除刷新慢显示替换的过程
    防抖案例实战之仿百度搜索框即时搜索
    数字金额转大写金额
    常见前端安全
    sendmail邮箱部署设置
    Shell之监控cpu、内存、磁盘脚本
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/6059409.html
Copyright © 2011-2022 走看看