Files
Convention-Python/Convention/Runtime/Web.md

3.3 KiB
Raw Blame History

返回

/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<HttpResponseMessage> callback) 异步GET
  • Get(Action<HttpResponseMessage> callback) 同步GET

POST请求

  • PostAsync(Action<HttpResponseMessage> callback, Dictionary<string, string> formData = null) 异步POST
  • Post(Action<HttpResponseMessage> callback, Dictionary<string, string> formData = null) 同步POST

支持表单数据提交

内容加载

文本加载

  • LoadAsTextAsync() 异步加载为文本
  • LoadAsText() 同步加载为文本

二进制加载

  • LoadAsBinaryAsync() 异步加载为字节数组
  • LoadAsBinary() 同步加载为字节数组

JSON加载

  • LoadAsJson<T>() 同步加载并反序列化JSON
  • LoadAsJsonAsync<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) 在当前对象上打开新URL
  • DownloadAsync(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>>();