3.3 KiB
3.3 KiB
/Convention/Runtime/Web
网络工具模块,提供HTTP客户端和URL操作功能
ToolURL类
构造与基本信息
ToolURL(string url)
从URL字符串创建对象ToString()
/GetFullURL()
/FullURL
获取完整URLimplicit operator string
隐式字符串转换
URL属性解析
GetFilename()
获取URL中的文件名GetExtension()
获取文件扩展名ExtensionIs(params string[] extensions)
检查扩展名是否匹配
URL验证
IsValid
属性,检查URL是否有效ValidateURL()
验证URL格式implicit operator bool
隐式布尔转换,等同于IsValid
支持HTTP和HTTPS协议的绝对URL
HTTP方法
GET请求
GetAsync(Action<HttpResponseMessage> callback)
异步GETGet(Action<HttpResponseMessage> callback)
同步GET
POST请求
PostAsync(Action<HttpResponseMessage> callback, Dictionary<string, string> formData = null)
异步POSTPost(Action<HttpResponseMessage> callback, Dictionary<string, string> formData = null)
同步POST
支持表单数据提交
内容加载
文本加载
LoadAsTextAsync()
异步加载为文本LoadAsText()
同步加载为文本
二进制加载
LoadAsBinaryAsync()
异步加载为字节数组LoadAsBinary()
同步加载为字节数组
JSON加载
LoadAsJson<T>()
同步加载并反序列化JSONLoadAsJsonAsync<T>()
异步加载并反序列化JSON
文件保存
Save(string localPath = null)
自动选择格式保存到本地SaveAsText(string localPath = null)
保存为文本文件SaveAsJson(string localPath = null)
保存为JSON文件SaveAsBinary(string localPath = null)
保存为二进制文件
文件类型判断
IsText
是否为文本文件(txt, html, htm, css, js, xml, csv)IsJson
是否为JSON文件IsImage
是否为图像文件(jpg, jpeg, png, gif, bmp, svg)IsDocument
是否为文档文件(pdf, doc, docx, xls, xlsx, ppt, pptx)
高级操作
Open(string url)
在当前对象上打开新URLDownloadAsync(string localPath = null)
异步下载文件Download(string localPath = null)
同步下载文件
设计特点
统一的HTTP客户端
使用静态 HttpClient
实例,避免连接池耗尽
自动内容类型检测
基于文件扩展名自动判断内容类型,优化保存和处理策略
异步支持
所有网络操作都提供异步和同步两种版本
错误处理
网络请求失败时回调函数接收null参数,方法返回false
文件管理集成
下载的文件自动转换为ToolFile对象,与文件系统模块无缝集成
灵活的数据格式
支持文本、二进制、JSON等多种数据格式的加载和保存
使用示例
基本HTTP请求
var url = new ToolURL("https://api.example.com/data");
if (url.IsValid)
{
url.Get(response => {
if (response != null && response.IsSuccessStatusCode)
{
// 处理响应
}
});
}
文件下载
var url = new ToolURL("https://example.com/file.json");
var localFile = url.Download("./downloads/file.json");
if (localFile.Exists())
{
var data = localFile.LoadAsJson<MyDataType>();
}
类型安全的JSON加载
var url = new ToolURL("https://api.example.com/users.json");
var users = url.LoadAsJson<List<User>>();