[返回](./Runtime-README.md) # /Convention/Runtime/Web --- 网络工具模块,提供HTTP客户端和URL操作功能 ## ToolURL类 ### 构造与基本信息 - `ToolURL(string url)` 从URL字符串创建对象 - `ToString()` / `GetFullURL()` / `FullURL` 获取完整URL - `implicit 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 callback)` 异步GET - `Get(Action callback)` 同步GET #### POST请求 - `PostAsync(Action callback, Dictionary formData = null)` 异步POST - `Post(Action callback, Dictionary formData = null)` 同步POST 支持表单数据提交 ### 内容加载 #### 文本加载 - `LoadAsTextAsync()` 异步加载为文本 - `LoadAsText()` 同步加载为文本 #### 二进制加载 - `LoadAsBinaryAsync()` 异步加载为字节数组 - `LoadAsBinary()` 同步加载为字节数组 #### JSON加载 - `LoadAsJson()` 同步加载并反序列化JSON - `LoadAsJsonAsync()` 异步加载并反序列化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)` 在当前对象上打开新URL - `DownloadAsync(string localPath = null)` 异步下载文件 - `Download(string localPath = null)` 同步下载文件 ## 设计特点 ### 统一的HTTP客户端 使用静态 `HttpClient` 实例,避免连接池耗尽 ### 自动内容类型检测 基于文件扩展名自动判断内容类型,优化保存和处理策略 ### 异步支持 所有网络操作都提供异步和同步两种版本 ### 错误处理 网络请求失败时回调函数接收null参数,方法返回false ### 文件管理集成 下载的文件自动转换为ToolFile对象,与文件系统模块无缝集成 ### 灵活的数据格式 支持文本、二进制、JSON等多种数据格式的加载和保存 ## 使用示例 ### 基本HTTP请求 ```csharp var url = new ToolURL("https://api.example.com/data"); if (url.IsValid) { url.Get(response => { if (response != null && response.IsSuccessStatusCode) { // 处理响应 } }); } ``` ### 文件下载 ```csharp var url = new ToolURL("https://example.com/file.json"); var localFile = url.Download("./downloads/file.json"); if (localFile.Exists()) { var data = localFile.LoadAsJson(); } ``` ### 类型安全的JSON加载 ```csharp var url = new ToolURL("https://api.example.com/users.json"); var users = url.LoadAsJson>(); ```