首页 > 其他分享 >开源.NetCore通用工具库Xmtool使用连载 - HTTP请求篇

开源.NetCore通用工具库Xmtool使用连载 - HTTP请求篇

时间:2023-08-29 18:33:17浏览次数:46  
标签:HTTP 请求 NetCore client Xmtool 方法 public string

【Github源码】

《上一篇》 介绍了Xmtool工具库中的XML操作类库,今天我们继续为大家介绍其中的HTTP请求类库。

在现如今的软件需求场景中,HTTP网络请求几乎是开发过程中必然会使用的功能;而系统自带的HTTPClient对象使用起来并不是那么容易和友好,因此我们对其进行了二次封装成了一个Web类库。 该Web类库提供了HTTP请求和HTTP安全相关两方面的封装。HTTP请求是基于系统自带的HttpClient对象进行了二次封装,提供了更易用的方法,并且对Json类型更加友好;HTTP安全方面主要针对XSS攻击提供了字符处理方法,后续会根据需要不断添加。

HTTP请求

使用HTTP请求,首选需要获取HttpClientExt对象:

HttpClientExt client = Xmtool.Web.Client();
// 或者
HttpClientExt client = Xmtool.Web.Client("microservice-1");

根据获取Client时传入的参数不同,系统将返回不同的实例;但对相同的参数会做单例处理,也就是说相同的参数将获取到同一个实例;当不传入任何参数时,每次都会返回一个全新的实例。

根据HTTP常用请求场景类库提供了各种属性和方法:

Timeout属性

BaseAddress属性

AddDefaultHeader方法

AddRequestHeader方法

AddRequestHeaderWithoutValidation方法

SetContent方法

SetJsonContent方法

SetJsonContent方法二

Clear方法

Get方法

GetAsync方法

Post方法

PostAsync方法

Put方法

PutAsync方法

Delete方法

DeleteAsync方法

Patch方法

PatchAsync方法

Head方法

HeadAsync方法

Options方法

OptionsAsync方法

1. Timeout属性

说明:用来设置或获取HTTP请求的超时时间。

2. BaseAddress属性

说明: 用来设置或获取HTTP请求的基本地址,在后续使用相对地址发送请求时会使用该地址进行拼接。

3. AddDefaultHeader方法

public HttpClientExt AddDefaultHeader(string name, string value)
说明:为HTTP请求设置请求头信息,该头信息会在实例每次发起请求时携带。
参数:

name:请求头名称。

value:请求头内容。

HttpClientExt client = Xmtool.Web.Client();
client.AddDefaultHeader("User", "admin");

4. AddRequestHeader方法

public HttpClientExt AddRequestHeader(string name, string value)

说明:为HTTP请求设置请求头信息,该头信息仅会在实例下一次发起请求时携带。
参数:

name:请求头名称。

value:请求头内容。

5. AddRequestHeaderWithoutValidation方法

public HttpClientExt AddRequestHeaderWithoutValidation(string name, string value)
说明:为HTTP请求设置请求头信息,该头信息仅会在实例下一次发起请求时携带;该方法和AddRequestHeader的区别是不会对参数的合法性进行检查。
参数:

name:请求头名称。

value:请求头内容。

6. SetContent方法

public HttpClientExt SetContent(string content)

说明:为下一次HTTP请求(主要是提交类请求,如Post)设置提交内容。
参数:

content:请求提交内容。

HttpClientExt client = Xmtool.Web.Client();
client.SetContnent("Good Day");
// TODO

7. SetJsonContent方法

public HttpClientExt SetJsonContent(string content)

说明:为下一次请求设置提交内容,必须是JSON格式。
参数:

content:请求提交内容,JSON格式。

HttpClientExt client = Xmtool.Web.Client();
client.SetJsonContnent("{\"Author\": \"softwaiter\"}");
// TODO

8. SetJsonContent方法二

public HttpClientExt SetJsonContent(DynamicObjectExt obj)

说明:通过动态对象为下一次请求设置JSON格式的提交内容。
参数:

obj:要提交的动态对象。

DynamicObjectExt obj = new DynamicObjectExt();
obj.Author = "softwaier";

HttpClientExt client = Xmtool.Web.Client();
client.SetJsonContnent(obj);
// TODO

9. Clear方法

public HttpClientExt Clear()

说明:清除仅在下一次请求中生效的提交内容和请求头信息。

10. Get方法

public HttpResponseExt Get(string requestUri)

说明:以Get方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.Get("https://www.baidu.com");
// TODO

11. GetAsync方法

public async Task<HttpResponseExt> GetAsync(string requestUri)

说明:Get方法的异步版本。

12. Post方法

public HttpResponseExt Post(string requestUri)

说明:以Post方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

// 新增一条人员信息
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.SetJsonContent("{\"user\": \"admin", \"password\": \"Admin123\"}")
    .Post("https://www.ceshi.com/person");
// TODO

13. PostAsync方法

public async Task<HttpResponseExt> PostAsync(string requestUri)

说明:Post方法的异步版本。

14. Put方法

public HttpResponseExt Put(string requestUri)

说明:以Put方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

// 修改Id为1的人员住址
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.SetJsonContent("{\"address\": \"BeiJing\"}")
    .Put("https://www.ceshi.com/person/1");
// TODO

15. PutAsync方法

public async Task<HttpResponseExt> PutAsync(string requestUri)

说明:Put方法的异步版本。

16. Delete方法

public HttpResponseExt Delete(string requestUri)

说明:以Delete方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

// 删除Id为1的人员信息
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.Delete("https://www.ceshi.com/person/1");
// TODO

17. DeleteAsync方法

public async Task<HttpResponseExt> DeleteAsync(string requestUri)

说明:Delete方法的异步版本。

18. Patch方法

public HttpResponseExt Patch(string requestUri)

说明:以Patch方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

// 修改Id为1的人员信息
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.SetJsonContent("{\"name\":\"wangxm\", \"age\": 18}")
    .Delete("https://www.ceshi.com/person/1");
// TODO

19. PatchAsync方法

public async Task<HttpResponseExt> PatchAsync(string requestUri)

说明:Patch方法的异步版本。

20. Head方法

public HttpResponseExt Head(string requestUri)

说明:以Head方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

21. HeadAsync方法

public async Task<HttpResponseExt> HeadAsync(string requestUri)

说明:Head方法的异步版本。

22. Options方法

public HttpResponseExt Options(string requestUri)

说明:以Options方式发起一个HTTP请求。
参数:

requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。

23. OptionsAsync方法

public async Task<HttpResponseExt> OptionsAsync(string requestUri)

说明:Options方法的异步版本。

HTTP安全

HTTP安全在类库中目前仅提供了一个应对XSS攻击的处理方法,该方法会对传入参数进行二次,将内容中有风险部分进行处理并返回。

使用时需要首先获取HttpSecurity对象:

HttpSecurity security = Xmtool.Web.Security();

Xss方法

1. Xss方法

public string Xss(string str)

说明:对指定字符内容进行Xss风险处理并返回处理结果。
参数:

str:需要进行处理的字符串内容。

string str = "<script>alert(123);</script><div>hello world.</div>";
string str2 = Xmtool.Web.Security().Xss(str);
Console.Writeline(str2);	// 输出<div>hello world.</div>
//TODO 

附加说明

一、DynamicObjectExt对象

说明:DynamicObjectExt动态对象是Xmtool工具库中最具特色的一项功能;通过该对象可以无需事先定义就能像使用实体类一样进行数据对象的赋值和操作;且比系统自带的dynamic对象更加灵活友好。如果你熟悉Javascript的话,它就像Javascript中的变量一样可以任意使用;更加详细的说明会在后续博文中介绍。

二、HttpResponseExt对象

HttpResponseExt对象用于接收HTTP请求返回结果,封装了响应码、响应头、响应内容 3 部分内容。

StatusCode属性

Headers属性

Content属性

Json属性

Xml属性

1. StatusCode属性

说明:HTTP请求的响应状态码。

2. Headers属性

说明:HTTP请求的响应头信息。
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt resp = client.Get("https://www.baidu.com");
if (resp.Headers.ContainsKey("user"))
{
    string user = resp.Headers["user"];
    // TODO
}

3. Content属性

说明:HTTP请求的响应内容。

4. Json属性

说明:HTTP请求返回的JSON格式的内容;如果返回内容不是合法的JSON格式,将返回异常。
// https://www.ceshi.com/person/1 请求返回内容
{
    "Name": "softwaiter",
    "Age": 18,
    "Address": "BeiJing"
}
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt resp = client.Get("https://www.ceshi.com/person/1");
if (resp.Json.Name == "softwaiter")
{
    // TODO
}

5. Xml属性

说明:HTTP请求返回的XML格式的内容;如果返回内容不是合法的XML格式,将返回异常。

【Github源码】

标签:HTTP,请求,NetCore,client,Xmtool,方法,public,string
From: https://blog.51cto.com/u_16229237/7279158

相关文章

  • go的net/http有哪些值得关注的细节
     原创 小白 小白debug 2023-08-1408:33 发表于上海收录于合集#go语言1个#面试17个#后端19个golang的net/http库是我们平时写代码中,非常常用的标准库。由于go语言拥有goroutine,goroutine的上下文切换成本比普通线程低很多,net/http库充分利用了这个优势,因此,它......
  • Http头Hostname攻击漏洞
    作者:Monyer链接:https://www.zhihu.com/question/67477221/answer/254009089来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这本来是个简单得不能再简单的漏洞。不过遵循题主的诉苦,我去网上找了一圈,的确发现没有一个能把这个问题说清楚,把解决方案......
  • HTTP服务器项目面试题
    ......
  • 在tomcat上安装PFX格式证书部署https
    您可以在Tomcat服务器安装已签发的SSL证书,实现通过HTTPS安全访问Web服务。本文介绍如何在Tomcat服务器安装PFX格式的SSL证书。步骤一:在阿里云的域名管理后台,下载SSL证书登录数字证书管理服务控制台。在左侧导航栏,单击SSL证书。在SSL证书页面,定位到目标证书,在操作列,单......
  • 什么是HTTP代理,socks5代理?它们的区别是什么?
    HTTP代理和socks5代理都是常见的网络代理方式,它们各自有着自己的特点和优势。本文将介绍HTTP代理和socks5代理的概念和特点,并比较它们之间的区别。什么是HTTP代理?HTTP代理是一种常见的网络代理方式,它通过在客户端和服务器之间建立一个中间层,将客户端的请求转发给服务器,并将服务器的......
  • 使用Python对HTTPS域名证书管理与验证
    随着业务的发展,很多域名都需要使用HTTPS。这就带来了一个新的问题:如何监控HTTPS域名证书的有效性。虽然证书不是一刹那过期的,但是也需要对其进行监控。了解其有效时间,并在过期前进行报警监控。要完成这些功能,所限就是要对证书进行解析。对证书解析可以使用python的OpenSSL库,以下为......
  • post data http or https
    classProgramTest{staticvoidMain(string[]args){stringurl="https://www.test.com";stringresult=PostUrl(url,"key=123");//key=4da4193e-384b-44d8-8a7f-2dd8b076d784Con......
  • Docker 搭建本地 https 环境
    目录1.生成自签名的SSL证书和私钥2.编辑Nginx的Dockerfile文件3.编辑YAML文件4.准备nginx主配置文件5.运行以下命令启动容器6.添加网页主页7.测试环境:安装Docker安装docker-compose1.生成自签名的SSL证书和私钥首先,生成自签名的SSL证书和私钥。可以使用......
  • 让用户访问Tomcat时强制跳转到Https方式
    让用户访问Tomcat时强制跳转到Https方式。首先配置Tomcat可以在Https下运行,相应的配置,请查看其它说明文档。http://www.iteye.com/topic/78274修改tomcat/conf/web.xml文件,在</welcome-file-list>下面加上如下语句<login-config><!--Authorizatio......
  • 如何把Https网站中的安全证书导入到java中的cacerts证书库中?
     如何把Https网站中的安全证书导入到java中的cacerts证书库中?在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?其实很简单,方法如下:每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,在该网页上右键>>属性......