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 请求客户端的更多相关文章
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之 Http 请求客户端
一个技术汪的开源梦 —— 目录 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 POST 了,那下面开 ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构
一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之序列化
一个技术汪的开源梦 —— 目录 想必大家在项目中都接触过 JSON 或者 XML 吧,为了将对象在网络上传输或者将其持久化必须将其序列化为一个字符串然后进行后续操作.常见的就是将其序列化成 JSON ...
- ASP.NET Core Razor 视图组件
视图组件简介 在新的ASP.NET Core MVC中,视图组件类似于局部视图,但它们更强大.视图组件不使用模型绑定,仅依赖于您在调用时提供的数据. 视图组件特性: 呈现页面响应的某一部分而不是整个响 ...
- Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)
一.前言 1.公共轮播图的实现 2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...
- Angular5中提取公共组件之radio list
上一篇说到了Checkbox List的公共组件提取,现在说一下Radio List的公共组件提取. Radio List组件提取起来很方便,不想Checkbox那么复杂. radio-list.co ...
- (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
1.HttpClient类使用存在的问题 HttpClient类的使用所存在的问题,百度搜索的文章一大堆,好多都是单纯文字描述,让人感觉不太好理解,为了更好理解HttpClient使用存在的问题,下面 ...
- Net Core开源通讯组件 SmartRoute
Net Core开源通讯组件 SmartRoute(服务即集群) SmartRoute是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置 ...
- .NET Core中文分词组件jieba.NET Core
.NET Core中文分词组件jieba.NET Core,由于实际的一些需求,需要做中文分词. 找到了一个jieba.NET https://github.com/anderscui/jieba.N ...
随机推荐
- Oracle笔记 四、增删改、事务
1.插入 insert into dept values(50, 'soft', 'Guangzhou'); insert into dept(deptno, dname) values(60, 's ...
- SQL Server 开发指南
SQL Server 数据库设计 一.数据库设计的必要性 二.什么是数据库设计 三.数据库设计的重要 四.数据模型 实体-关系(E-R)数据模型 ...
- myeclipse上SVN代码合并详细步骤图解
1. 在装有svn插件的myeclipse中,在主干上选择需要合并的文件或文件夹 右击 -> 合并(merge) 2. 选择合并类型--合并两个不同的树 Merge -> Next 3. ...
- SQL笔记-第一章,数据库入门
DBMS的分类DB2.Oracle.Microsoft SQL Server.Sybase SQLServer.Informix.MySQL数据库的结构元素库 database表 table列 col ...
- Session为null 问题
问题描述: var svode=HttpContext.Current.Session["VCode"].ToString(); //调试时候发现 svode ==null // ...
- css 强制不换行
强制不换行 div{white-space:nowrap;} 自动换行 div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行 div{w ...
- 学习c的第6天2
#include <stdio.h> #include <math.h> int main() { float num; printf("请输入该生当月的消费额:\n ...
- Hbase Interface HConnection
HTablePool 在Hbase 0.94.0.95.0.97被废弃,在0.98中被清除( HTablePool 对比HConnection.getTable),hbase0.98 HTablePo ...
- jQuery打造用户注册时获取焦点文本框出现提示jquery表单特效
jQuery打造用户注册时获取焦点文本框出现提示效果的jquery表单特效 当获取焦点时,会分别的弹出相应的信息提示框,失去焦点就会隐藏提示信息. 效果兼容性很高,适用浏览器:IE6.IE7.IE8. ...
- Google搜索镜像
From:http://www.cnblogs.com/killerlegend/p/3783744.html Date:2014.6.12 By KillerLegend Google 搜索:htt ...