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

这篇具有很好参考价值的文章主要介绍了开源.NetCore通用工具库Xmtool使用连载 - HTTP请求篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【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中的变量一样可以任意使用;更加详细的说明请参考《DynamicObjectExt详细说明》。

二、HttpResponseExt对象

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

StatusCode属性

Headers属性

Content属性

Json属性

Xml属性文章来源地址https://www.toymoban.com/news/detail-641188.html

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源码】

到了这里,关于开源.NetCore通用工具库Xmtool使用连载 - HTTP请求篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源.NetCore通用工具库Xmtool使用连载 - 扩展动态对象篇

    《上一篇》 介绍了Xmtool工具库中的图形验证码类库,今天我们继续为大家介绍其中的扩展动态对象类库。 扩展动态对象是整个工具库中最重要的一个设计。在软件开发过程中,我们经常需要定义各种各样的数据对象;例如:用于参数传递的数据实体类、用于接口返回结果的

    2024年02月08日
    浏览(31)
  • 开源.NetCore通用工具库Xmtool使用连载 - 散列算法篇

    【Github源码】 《上一篇》详细介绍了Xmtool工具库中的加解密类库,今天我们继续为大家介绍其中的散列算法类库。 散列算法在某些特殊场景也可以当做加密方法使用;其特点是不可逆,同一内容每次散列值绝对一致,所以也可用作对数据内容是否被篡改的校验方法;或者其

    2024年02月03日
    浏览(24)
  • 开源.NetCore通用工具库Xmtool使用连载 - OSS文件上传篇

    《上一篇》 介绍了Xmtool工具库中的图像处理类库,今天我们继续为大家介绍其中的OSS文件上传类库。 将本地文件上传到服务器是软件系统经常会遇到的需求,例如:设置用户头像,上传Excel报表等等;涉及到网络访问性能、存储空间等因素的考虑,通常我们会选择使用第三方

    2024年02月19日
    浏览(28)
  • 基于.NetCore开源的Windows的GIF录屏工具

    推荐一个Github上Start超过20K的超火、好用的屏幕截图转换为 GIF 动图开源项目。 这是基于.Net Core + WPF 开发的、开源项目,可将屏幕截图转为 GIF 动画。它的核心功能是能够简单、快速地截取整个屏幕或者选定区域,并将其转为 GIF动画,还支持自定义 GIF 动画效果、字幕、背景

    2024年02月06日
    浏览(35)
  • 深入理解通用的HTTP POST请求发送方法

    在现代的软件开发中,与服务端进行HTTP通信是一项基础而重要的任务。本篇博客将深入研究并详细解释一个通用的HTTP POST请求发送方法,该方法使用了 RestTemplate 库来简化HTTP通信。我们将逐行分析代码,理解每一步的操作,并通过一个简单的示例演示如何使用这个方法。 步

    2024年02月04日
    浏览(41)
  • java使用hutool工具类发送http或者https请求太香啦

    我们使用java内置的http工具实现远程调用的时候,都是用try catch包一堆代码,巨难受,今天看见有人使用hutool工具类那是天简单了呀,具体操作如下: 1,引入依赖 2, 如果不需要设置其他什么头信息,代码: 如果是https请求直接换url里面的http就行 返回信息格式: {\\\"code\\\":200

    2024年02月14日
    浏览(27)
  • 使用HuTool的Http工具发送post传递中文参数,请求会乱码的解决方法

    Hutool 是一款功能丰富、易用的Java工具类库,我们在工作中经常会使用它的各种类库方法简化我们的开发,其中我们甚至能通过它的Http工具类直接发送http的各种请求,下面来介绍一下发送post请求时参数中有中文出现乱码的解决方法。 这样就不会造成请求参数出现乱码问题

    2024年02月01日
    浏览(31)
  • 28、web攻防——通用漏洞&SQL注入&HTTP头XFF&COOKIE&POST请求

    $_GET :接收get请求,传输少量数据,URL是有长度限制的; $_POST :接收post请求; $_COOKIE :接收cookie,用于身份验证; $_REQUEST :收集通过 GET 、POST和COOKIE 方法发送的表单数据; $_SERVER :接收数据包中的一些内容,如浏览器信息、当前访问url地址等; 网站功能点: 后台要记录

    2024年01月19日
    浏览(42)
  • HarmonyOS开发:基于http开源一个网络请求库

    网络封装的目的,在于简洁,使用起来更加的方便,也易于我们进行相关动作的设置,如果,我们不封装,那么每次请求,就会重复大量的代码逻辑,如下代码,是官方给出的案例: 以上的案例,每次请求书写这么多代码,在实际的开发中,是无法承受的,所以基于此,封装

    2024年02月06日
    浏览(42)
  • SeaTunnel 海量数据同步工具的使用(连载中……)

    SeaTunnel 是一个非常易用,高性能、支持实时流式和离线批处理的海量数据处理产品,前身是 WaterDrop (中文名:水滴),自 2021年10月12日更名为 SeaTunnel 。2021年12月9日,SeaTunnel 正式通过Apache 软件基金会的投票决议,以全票通过的优秀表现正式成为 Apache 孵化器项目。 2022年

    2024年01月16日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包