开始对一些公用方法进行封装打包
?比来事情对照忙,很久没有写对象了,今天抽点时间整体一下比来事情的一个常识点小结。http请求对我们来说一点都不模式,措施员的我们有可能天天就是和这一些打交道。无论是BS架构的措施,前后真个数据交互,已经后台处事之间的数据交互,http还是主流。
比来接触的一个新项目,其项目是一个祖传项目,经历很多波小伙伴的手,代码气势派头也各不不异,反复性的代码一大波一大波的堆砌。在接手熟悉整理过程的,开始对一些公用要领进行封装打包,此刻我就分享此中一个间的模块,,那么就是对接口间的http请求措置惩罚惩罚封装。
固然了,其实http请求对绝大部分小伙伴来说都是家常便饭的熟悉,但是我今天还是要写出来,其目的是为了做一次常识总结和分享,也为了一个项目的统一,制止反复的造差此外轮子。在文中如有有说的欠好的,或者错误的处所,但愿你能够指点指点,感谢!
言归正传,回到主题上来哈。至于http请的详细介绍,我就不在此烦琐了,也免得占用大家时间。在实际使用过中,get和post是两种最常见不过的方法,下面也主要围绕这两个方法介绍。本文中主要是针对HttpWebRequest的封装进行分享。
一、聊聊Content-Type几种常见类
在聊http请求操纵,首先需要了解的就是content-type(内容类型)关键,简单的说就是文档数据交互要领,其常见的主要有如下3种。
A:application/x-www-form-urlencoded
最常见的提交数据的方法,也是默认数据提交方法,其数据通报最终会转换为键值对的方法通报,key1=val1&key2=val2
B:multipart/form-data
表单方法提交,也是对照常见的提交方法。
C、application/json
该方法越来越风行,已json方法交互,很多开发接口数据交互都是json方法。
二、聊聊PAI的常见参数接收方法
其实我们在说http请求,API是离不开的话题,这也是本次分享的主要原因。尤其是此刻都在倡导微处事,处事间的自挪用就在所不免。那么下面我将简单总结一下常见的PAI数据接收方法:
凭据有无参数分类,分了两大类,有参接口、无参接口。
此中,无参接口最为简单,没有什么好说的。下面主要说一下有参接口数据接收方法。
FromQuery:这一种对照简单的实现方法,也就是我们常见的url地点上的键值对方法通报接受,好比:url?key1=value1&key2=value2。该方法适用于get和post两种方法
FromRoute:路由参数,简单的说就是参数就是url地点的一部分。按照路由法则解析对应的参数。好比:urls/value1/value2。该方法适用于get和post两种方法
FromForm:表单方法通报,通过from表单方法接受参数,直接提交一个from表单。该方法使用与post。
FromBody:以json方法提交数据,接受时以一个对应的实体模型接收。该方法使用post
嗯,上面几种方法是我们常见的方法,了解了这一些方法,能解决失90%的http请求。其他的方法就不在此详聊。
三、Content-Type与PAI常见参数接收方法对应关系
Content-Type
参数接收方法
使用类型
application/x-www-form-urlencoded
FromQuery
FromRoute
get、post
multipart/form-data
FromForm
post
application/json
FromBody
post
四、http请求返回接收方法
其实严格的意义来说法不正确,其实接收方法都是一个字符串方法。我说的方法,是指在接收到请求功效后,其本身对数据的措置惩罚惩罚方法,也就两种方法,其一,请求功效字符串;其二、请求功效转换为对应的实体模型。
五、HttpWebRequest封装
结合上面的几点分析,下面主要针对这几种情况进行封装说明。
针对FromQuery参数:在封装中,通过字典方法交互
针对FromRoute参数:在封装中,通过list字符串调集交互
针对FromForm参数:在封装中,通过字典方法交互
针对FromBody参数:在分装中,通过数据模型方法交互
在每一种交互方法上,按照编码方法、过期时间、返回类型,又重载了几个要领
下面直接上代码:
get方法封装部分代码:
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; namespace XYH.Tools.HttpTool { /// <summary> /// http get 请求相关的操纵辅佐类 /// </summary> public partial class HttpTool : HttpToolBase { #region 无参 /// <summary> /// http请求,不仅独带有参数(返回一个泛型实体) /// </summary> /// <param>请求地点</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGet<TReturn>(string url, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet<TReturn>(url, defaultEncodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数(返回一个字符串) /// </summary> /// <param>请求地点</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGet(string url, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet(url, defaultEncodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数 (返回一个泛型实体) /// 自界说编码方法 /// </summary> /// <param>请求地点</param> /// <param>编码方法</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGet<TReturn>(string url, Encoding encodType, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet<TReturn>(url, encodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数(返回一个字符串) /// 自界说编码方法 /// </summary> /// <param>请求地点</param> /// <param>编码方法</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGet(string url, Encoding encodType, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet(url, encodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数 (返回一个泛型实体) /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>请求地点</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGet<TReturn>(string url, int timeout, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet<TReturn>(url, defaultEncodType, timeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数(返回一个字符串) /// 自界说编码方法 /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>请求地点</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGet(string url, int timeout, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet(url, defaultEncodType, timeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数 (返回一个泛型实体) /// 自界说编码方法 /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>请求地点</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGet<TReturn>(string url, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet<TReturn>(url, encodType, timeout, headerKeyValue); } /// <summary> /// http请求,不仅独带有参数(返回一个字符串) /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>请求地点</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGet(string url, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { // 倡议请求 return GetResponseResultForGet(url, encodType, timeout, headerKeyValue); } #endregion #region 参数字典 (键值对参数 path?kay1=value1&kay12=value2...) /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个字符串) /// </summary> /// <param>地点</param> /// <param>请求参数字典</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetDic(string url, Dictionary<string, string> parameters, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, defaultEncodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典(键值对参数 path?kay1=value1&kay12=value2...)(返回一个泛型实体) /// </summary> /// <param>地点</param> /// <param>请求参数字典</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetDic<TReturn>(string url, Dictionary<string, string> parameters, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, defaultEncodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个字符串) /// 自界说编码方法 /// </summary> /// <param>地点</param> /// <param>请求参数字典</param> /// <param>编码方法</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetDic(string url, Dictionary<string, string> parameters, Encoding encodType, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, encodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个泛型实体) /// 自界说编码方法 /// </summary> /// <param>地点</param> /// <param>请求参数字典</param> /// <param>编码方法</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetDic<TReturn>(string url, Dictionary<string, string> parameters, Encoding encodType, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, encodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个字符串) /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>参数调集</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetDic(string url, Dictionary<string, string> parameters, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, defaultEncodType, timeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个泛型实体) /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>参数调集</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetDic<TReturn>(string url, Dictionary<string, string> parameters, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, defaultEncodType, timeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个字符串) /// 自界说编码方法 /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>参数调集</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetDic(string url, Dictionary<string, string> parameters, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, encodType, timeout, headerKeyValue); } /// <summary> /// http请求,并带有请求参数字典 (键值对参数 path?kay1=value1&kay12=value2...)(返回一个泛型实体) /// 自界说编码方法 /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>参数调集</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetDic<TReturn>(string url, Dictionary<string, string> parameters, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, encodType, timeout, headerKeyValue); } #endregion #region rout路由参数 /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个泛型实体) /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetRout<TReturn>(string url, List<string> parameters, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, defaultEncodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个字符串) /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetRout(string url, List<string> parameters, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, defaultEncodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个泛型实体) /// 自界说编码方法 /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>编码方法</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetRout<TReturn>(string url, List<string> parameters, Encoding encodType, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, encodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个字符串) /// 自界说编码方法 /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>编码方法</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetRout(string url, List<string> parameters, Encoding encodType, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, encodType, defaultTimeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个泛型实体) /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetRout<TReturn>(string url, List<string> parameters, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, defaultEncodType, timeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个字符串) /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetRout(string url, List<string> parameters, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, defaultEncodType, timeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个泛型实体) /// 自界说编码方法 /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static TReturn HttpGetRout<TReturn>(string url, List<string> parameters, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet<TReturn>(url, encodType, timeout, headerKeyValue); } /// <summary> /// http请求,并带有list调集请求参数(rout路由参数)(返回一个字符串) /// 自界说编码方法 /// 自界说超不时间 单位毫秒 默认为1分钟 /// </summary> /// <param>地点</param> /// <param>list调集请求参数</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求措置惩罚惩罚功效</returns> public static string HttpGetRout(string url, List<string> parameters, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { // 构建请求参数 url = GetRequestPath(url, parameters); // 倡议请求 return GetResponseResultForGet(url, encodType, timeout, headerKeyValue); } #endregion /// <summary> /// 获取请求功效(返回一个泛型实体) /// </summary> /// <param>url</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求功效返回值</returns> private static TReturn GetResponseResultForGet<TReturn>(string url, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { return GetResponseResult<TReturn>(url, string.Empty, "get", string.Empty, encodType, timeout, headerKeyValue); } /// <summary> /// 获取请求功效(返回一个泛型实体) /// </summary> /// <param>url</param> /// <param>编码方法</param> /// <param>超不时间</param> /// <param>头部键值对参数</param> /// <returns>请求功效返回值</returns> private static string GetResponseResultForGet(string url, Encoding encodType, int timeout, List<MHeadParamet> headerKeyValue = null) { return GetResponseResult(url, string.Empty, "get", string.Empty, encodType, timeout, headerKeyValue); } } }
post方法封装部分代码:
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31313.html