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 提交数据类型类,用于指定提交的数据是 文本 还是 文件。

 

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

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

好了,最主要的 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 请求参数签名

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

Net Core 的公共组件之 Http 请求客户端的更多相关文章

  1. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之 Http 请求客户端

    一个技术汪的开源梦 —— 目录 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 POST 了,那下面开 ...

  2. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构

    一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...

  3. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之序列化

    一个技术汪的开源梦 —— 目录 想必大家在项目中都接触过 JSON 或者 XML 吧,为了将对象在网络上传输或者将其持久化必须将其序列化为一个字符串然后进行后续操作.常见的就是将其序列化成 JSON ...

  4. ASP.NET Core Razor 视图组件

    视图组件简介 在新的ASP.NET Core MVC中,视图组件类似于局部视图,但它们更强大.视图组件不使用模型绑定,仅依赖于您在调用时提供的数据. 视图组件特性: 呈现页面响应的某一部分而不是整个响 ...

  5. Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)

    一.前言                    1.公共轮播图的实现                    2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...

  6. Angular5中提取公共组件之radio list

    上一篇说到了Checkbox List的公共组件提取,现在说一下Radio List的公共组件提取. Radio List组件提取起来很方便,不想Checkbox那么复杂. radio-list.co ...

  7. (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求

    1.HttpClient类使用存在的问题 HttpClient类的使用所存在的问题,百度搜索的文章一大堆,好多都是单纯文字描述,让人感觉不太好理解,为了更好理解HttpClient使用存在的问题,下面 ...

  8. Net Core开源通讯组件 SmartRoute

    Net Core开源通讯组件 SmartRoute(服务即集群) SmartRoute是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置 ...

  9. .NET Core中文分词组件jieba.NET Core

    .NET Core中文分词组件jieba.NET Core,由于实际的一些需求,需要做中文分词. 找到了一个jieba.NET https://github.com/anderscui/jieba.N ...

随机推荐

  1. SQL Server 2008 R2 找不到 Install SQL Server Profiler 找不到 事件探查器 解决

    摘自: http://blog.csdn.net/yuxuac/article/details/8992893 SQL Server 2008 R2 Express Edition - Install ...

  2. poj3274 哈希

    这题终于让我AC了,其过程之艰辛我不想再回忆了,看了各种代码,一定要注意指针空和非空的问题,再一个要注意边界. #include <stdio.h> #include <string ...

  3. /proc/cpuinfo

    /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. 它以文件系统的方式为访问系统内核数据的操作提供接口. 用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数 ...

  4. Android WebRTC 音视频开发总结(一)

    本系列文章主要总结和分享WebRTC开发过程中的一些经验,转载请说明出处(博客园RTC.Blacker),更多交流与合作请看页面上方的子标题! 一.WebRTC是什么? 可能您还不知道WebRTC是什 ...

  5. yii2.0 DetailView 自定义样式

    GII 生成如下: <?= DetailView::widget([ 'model' => $model, 'attributes' => [ 'id', ['label'=> ...

  6. 软件工程 speedsnail 第二次冲刺3

    20150520 完成任务:划线第三天,能画出一条直黄线且与蜗牛共存: 遇到问题: 问题1 碰撞检测有缺陷 解决1 没有解决 明日任务: 实现蜗牛与线的碰撞

  7. C#winform初试报表

    步骤1.新建一个窗口,拖一个ReportViewer控件上去,设置该控件的Dock为Fill. 步骤2.添加一个报表文件,如:Report1.rdlc,设置其中的参数,这里设置的参数和下面的代码里面的 ...

  8. WPF—TreeView无限极绑定集合形成树结构

    1.如图所示:绑定树效果图 2.前台Xaml代码: <Window x:Class="WpfTest.MainWindow" xmlns="http://schem ...

  9. Silverlight学习之初始化参数

    首先需要在Silverlight的宿主页面添加上initParams,如 <param name="initParams" value="key1=jerry,ke ...

  10. linux常用命令--ps、netstat、find

     一.ps 1.1ps命令简介 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那 ...