.NET集成DeveloperSharp实现http网络请求与其它工具的比较

 

爆了,爆了,DeveloperSharp系列近期又被制造业ERP、民航飞行App、建筑BIM、电力掌上营业厅、等多家大型采用,站在巨人的肩膀上你能走的更远。

 

支持.Net Core2.0及以上,支持.Net Framework4.0及以上

http请求调用是开发中经常会用到的功能。在内,调用自有项目的Web Api等形式接口时会用到;在外,调用一些第三方功能接口时,也会用到,因为,这些第三方功能往往是通过http地址的形式提供的,比如:短信服务、在线翻译、地图服务、语音智能、等…

 

http请求调用,又分为Post与Get两种形式。

Post形式的请求相对复杂一些,也更常用,一旦弄明白它, Get形式一看便懂,故我们首先来看看Post形式的请求调用。

使用Post调用http,往往有四个参数需要设置:

(1)     调用地址

(2)     需要发送过去的参数

(3)     http请求头(如果有设置)

(4)     编码格式。常用的为:application/json

 

下面给出一个使用第三方链接“发送短信”的代码示例:

using DeveloperSharp.Framework.CoreUtility; //从NuGet引用DeveloperSharp包
using Newtonsoft.Json; //从NuGet引用Newtonsoft.Json包
--------------------------public static object SendMessage(string mobile, string code, string name){//创建DeveloperSharp中的IUtility工具IUtility IU = new Utility();//调用地址string requestUrl = "https://prekaka.rainfn.com/kaka/api/v1/activity/uploadUserData";//需要发送的参数Dictionary<string, object> data = new Dictionary<string, object>{{ "mobile",mobile },{ "code",code},{ "name",name}};//Post形式发送请求调用var responsesStr = IU.HttpPost(requestUrl, JsonConvert.SerializeObject(data), null, "application/json");object reData = JsonConvert.DeserializeObject<object>(responsesStr);return reData;}

上例因为没有设置“http请求头”,故HttpPost方法的第三个参数传值为null。

 

HttpPost方法的详细说明如下:

HttpPost(Async)
声明:string HttpPost(string Url, string ParamData = "", Dictionary<string, string> HeaderDic = null, string ContentType = "application/x-www-form-urlencoded");
用途:调用Http-Post请求
参数:(1string Url             --  调用请求的url地址(2string ParamData      --  提交的参数(3)Dictionary<string, string> HeaderDic  --  存放http头的键值对(4string ContentType   --  请求的编码格式,通常有application/x-www-form-urlencoded(默认设置)、multipart/form-data、application/json三种形式
返回:String   --  请求结果(-107开头表示出错)

 

 

最后,我们来说说Get形式的请求调用。

Get形式往往用于url后带问号“?N1=V1&N2=V2&N3=V3”这类的调用。这类调用的特点是:“需要发送的参数”直接挂在了“调用地址”后面。下面直接给出一个示例,你一看便知:

using DeveloperSharp.Framework.CoreUtility; //从NuGet引用DeveloperSharp包
--------------------------IUtility ui = new Utility();string r = ui.HttpGet("http://localhost:1416/Handler1.ashx?name=kyyk&age=100");

 

☆与其它工具的比较

(1)有人可能会说,http调用还有Put、Delete、等类型。但实际开发中,我们只用Post/Get两种就够了。

(2)正是由于http请求调用是项目开发中如此重要的一环,市面上产生了很多相关工具,比:FlurXXX、RestSharXXX、HttpClieXXX、等等...

但本文的方案其实可以算得上是上述这些方案的理论基础/底层。

上述一些工具,更多的是把本文方案中的“编码格式”与“json序列化/反序列化”两步给简化包装+集成,成为了PostJson、GetUrl、之类方法。但本文前面提到过,“编码格式”Content-Type常用的有Json、x-www-form-urlencoded、form-data三种,它们只是常用的三种,事实上不止这三种(这是问题的核心所在!!)。

你现在能包装成PostJson、PostUrl,PostData,后续更多的种类作者都包装了么?答案是:没有!!

所以,从这个意义上说,上述那些工具在功能上是有缺陷的,遇到特殊情况它们处理不了!!

为了使功能完善+能处理所有情况的http请求调用,最好的方法,就是像本文方案那样,把“编码格式”Content-Type作为一个string参数显露出来,让开发者根据情况自己去填写....(本文完)

 


关注下方公众号,可以获得名企内推。向大佬学习,探行业内幕,享时代机遇。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/714459.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

What You See Is What You Get 所见即所得 20240525~0526 心得记录

# 参访《成都味之道生物科技有限公司》 # 矿泉水250毫升,不浪费Worth:在生活中寻找和理解真正有价值的事物,关注内在价值和意义。Zest:以热情和积极的态度面对生活,享受生活中的每一个瞬间。Discover:不断探索和发现新的事物,不断学习和成长,丰富人生体验。 看见工厂里…

量化交易 价量突破策略

在量化交易中,价格和成交量是两个非常重要的指标,它们为投资者提供了市场动态的直观信息。本文将探讨如何将价格和成交量(简称“价量”)结合运用于量化交易策略中,以及如何通过这些指标来构建有效的交易模型。 感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共…

【量化交易】顶底分型策略

在众多的量化策略中,顶底分型策略因其独特的市场趋势捕捉能力和简洁的实现方式而受到许多投资者的青睐。本文将详细介绍顶底分型策略的原理,并展示如何使用Python在聚宽平台上实现这一策略。 感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共同交流! 顶底分型策略…

CF1975F

dfs 合并限制。类似题目:[BalticOI 2014 Day 1] Sequence。 然而暑假模拟赛没做出来,现在照样做不出来捏。场上不知道为啥一直想高位前缀和描述限制。 考虑按位填,每次填完以后限制会有一定变化,具体来说,设原来的限制是 \(lmt_T\),那么:填 \(0\):变成 \(lmt_T=lmt_{T*…

电子公文传输系统安全-进展2

- 上周任务完成情况完成对于登陆过程中的加盐操作:SM3加盐算法存储密码的实现类 加盐思路: 1.通过UUID拿到盐值 2.拼接:盐值+明文密码 3.对2中数据进行SM3哈希 4.拼接: 盐值 + ”^“ + 3中的哈希值 明文密码走完上述流程后后存入数据库 登录验证: 1.根据用户名在数据库…

第六周基础部分作业

@所有人 第六周基础部分作业:总结关系型数据库相关概念,关系,行,列,主键,惟一键,域。关系型数据库:以二维表的方式记录数据。关系relational:每张表;行row:record,每条记录;列column:field,每个字段、属性;主键Primary key:PK,唯一确定每条记录的字段,所以每…

Java线程的生命周期

线程生命周期 从线程到销毁期间经历五个状态本文来自博客园,作者:Yang0710,转载请注明原文链接:https://www.cnblogs.com/cwyYYDS/p/18214106

jieba 分词

print("学号后两位为33(2023310343133)") import jieba txt = open("西游记.txt","r",encoding=gb18030).read() words = jieba.lcut(txt) counts = {} for word in words: if len(word) == 1: #排除单个字符的分词结果 continue elif wo…

Pwned

PwnedPwned⏲️ Release Date // 2020-09-25 ✔️ MD5 // 4fff941050062efd06bc63ac8e740132 ☠ Root // 414 💀 User // 421主机探测和nmap扫描 nmap -sn 192.168.56.100/24Nmap scan report for 192.168.56.125 Host is up (0.00034s latency). MAC Address: 08:00:27:EC:D…

Charles 弱网测试【Throttle Setting】

不开弱网: 开启弱网: 开启弱网后:

使用 firewall-cmd --list-all 命令查看防火墙策略信息显示不全,缺少protocols选项

出现这个问题的原因是我们当前Linux系统的防火墙的版本太低导致的。需要升级一下防火墙。 对于Red Hat、CentOS或Fedora系统:sudo yum update sudo yum install iptables或者,如果你想使用firewalld:sudo yum update sudo yum install firewalld再次进行查看就好了。

宏景eHR-OutputCode存在任意文件读取漏洞

漏洞描述 宏景eHR是一种企业人力资源管理系统,该漏洞存在于OutputCode模块中,该模块未能正确验证用户输入的文件路径参数path。由于缺乏充分的输入校验和路径处理,攻击者可以通过构造恶意的path参数,读取服务器上的任意文件 fofa app="HJSOFT-HCM" POC GET /serv…

LVS精益价值管理系统DownLoad.aspx存在任意文件读取漏洞

漏洞描述 该漏洞允许攻击者通过构造特定的请求,读取服务器上的任意文件,从而可能导致敏感信息泄露。DownLoad.aspx页面接受一个文件路径作为参数,并直接将其传递给文件读取函数。这个函数没有经过严格的检查和过滤,攻击者可以通过构造恶意请求,包含相对路径或绝对路径,从…

BookKeeper 介绍(1)--简介

BookKeeper 是一个可扩展、可容错和低延迟的存储服务;本文主要介绍其基本概念及特性。 1、基本概念 在 BookKeeper 中:日志的单元是 entry (又名 record) 日志 entries 流称为 ledgers 存储 ledgers 的独立服务器称为 bookiesBookKeeper 被设计为可靠且能够抵御各种故障。boo…

Blog的图床搭建

本图床搭建基于GitHub+PicGo+jsDelivr 本文仅为个人操作方法 文章中如有谬误,请多指教本图床搭建基于GitHub+PicGo+jsDelivr 本文仅为个人操作方法 文章中如有谬误,请多指教1.下载PicGo 在PicGO官网下载PicGo2.在GitHub中获取tokens 如果你的GitHub中没有repositories或者你想…

本地/全局/分布式事务

根据服务架构,事务可以大致划分为三类本地事务:一个服务使用一个数据源 全局事务:一个服务使用多个数据源 分布式事务:涉及多个服务,不同服务使用不同数据源本地事务 由数据库提供支持,如MySQL中的InnoDB存储引擎,提供了ACID实现。 全局事务 涉及到多个数据源,需要从外…

SAP S4HANA2023 PCE系统上的VKM3?

SAP S4HANA 2023 PCE系统上的VKM3?在SAP S4HANA 2023 PCE系统上, 试图执行事务代码VKM3,为某个销售订单释放客户信用冻结,系统报错:无法执行事务VKM3(SAP Note 2476734), 详细报错信息:无法执行事务 VKM3 (SAP Note 2476734) 消息编号 00977 诊断 系统配置(黑名单监控)已…

charles——mock数据

我本地有一个web项目:http://localhost.charlesproxy.com:8080/1 charles能正常抓到数据: 将此请求,保存到本地,然后修改此数据,再次进行请求: 右击此请求,选择save response;将此请求保存到本地: 保存后如下: 修改如下,并进行保存: 开启map local 映射:清空,…

测试进程A是否可以执行关联的响应接口

设计两个程序,要求进程A中自定义信号SIGUSR1的响应接口,要求进程B每隔一段时间向进程A就发送SIGUSR1信号,测试进程A是否可以执行关联的响应接口。 /******************************************************************************************************* @file name: …