• 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 请求参数签名

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

  • 相关阅读:
    小程序云开发 -- 云函数定时触发器配置
    小程序echarts 构建中国地图并锚定区域点击事件
    微信小程序接入百度OCR(身份证识别)
    微信小程序开发技巧总结(三)-- 云开发时效数据刷新和存储 (access_token等)
    微信小程序仿朋友圈功能开发(发布、点赞、评论等功能)
    微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载
    SpringBoot Jpa 自定义查询
    SpringBoot Jpa 分页查询最新配置方式
    【软工】提问回顾与个人总结
    【软工】[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/6059409.html
Copyright © 2020-2023  润新知