《上一篇》 介绍了Xmtool工具库中的XML操作类库,今天我们继续为大家介绍其中的HTTP请求类库。
在现如今的软件需求场景中,HTTP网络请求几乎是开发过程中必然会使用的功能;而系统自带的HTTPClient对象使用起来并不是那么容易和友好,因此我们对其进行了二次封装成了一个Web类库。
该Web类库提供了HTTP请求和HTTP安全相关两方面的封装。HTTP请求是基于系统自带的HttpClient对象进行了二次封装,提供了更易用的方法,并且对Json类型更加友好;HTTP安全方面主要针对XSS攻击提供了字符处理方法,后续会根据需要不断添加。
使用HTTP请求,首选需要获取HttpClientExt对象:
HttpClientExt client = Xmtool.Web.Client();
// 或者
HttpClientExt client = Xmtool.Web.Client("microservice-1");
根据获取Client时传入的参数不同,系统将返回不同的实例;但对相同的参数会做单例处理,也就是说相同的参数将获取到同一个实例;当不传入任何参数时,每次都会返回一个全新的实例。
根据HTTP常用请求场景类库提供了各种属性和方法:
AddRequestHeaderWithoutValidation方法
name:请求头名称。
value:请求头内容。
HttpClientExt client = Xmtool.Web.Client();
client.AddDefaultHeader("User", "admin");
name:请求头名称。
value:请求头内容。
name:请求头名称。
value:请求头内容。
content:请求提交内容。
HttpClientExt client = Xmtool.Web.Client();
client.SetContnent("Good Day");
// TODO
content:请求提交内容,JSON格式。
HttpClientExt client = Xmtool.Web.Client();
client.SetJsonContnent("{\"Author\": \"softwaiter\"}");
// TODO
obj:要提交的动态对象。
DynamicObjectExt obj = new DynamicObjectExt();
obj.Author = "softwaier";
HttpClientExt client = Xmtool.Web.Client();
client.SetJsonContnent(obj);
// TODO
requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.Get("https://www.baidu.com");
// TODO
requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。
// 新增一条人员信息
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.SetJsonContent("{\"user\": \"admin", \"password\": \"Admin123\"}")
.Post("https://www.ceshi.com/person");
// TODO
requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。
// 修改Id为1的人员住址
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.SetJsonContent("{\"address\": \"BeiJing\"}")
.Put("https://www.ceshi.com/person/1");
// TODO
requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。
// 删除Id为1的人员信息
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt rep = client.Delete("https://www.ceshi.com/person/1");
// TODO
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
requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。
requestUri:HTTP请求地址,可以是相对地址或绝对地址;如果是相对地址将使用BaseAddress进行拼接。
HTTP安全在类库中目前仅提供了一个应对XSS攻击的处理方法,该方法会对传入参数进行二次,将内容中有风险部分进行处理并返回。
使用时需要首先获取HttpSecurity对象:
HttpSecurity security = Xmtool.Web.Security();
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
HttpResponseExt对象用于接收HTTP请求返回结果,封装了响应码、响应头、响应内容 3 部分内容。
HttpClientExt client = Xmtool.Web.Client();
HttpResponseExt resp = client.Get("https://www.baidu.com");
if (resp.Headers.ContainsKey("user"))
{
string user = resp.Headers["user"];
// TODO
}
// 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
}