前言:当调用HTTP请求时,通常有get和post两种方式
| 类型 | 位置 | 内容格式 | 常见用途 | 示例 | 
|---|---|---|---|---|
| Query 参数 | URL 里(? 后) | 
key=value&key=value | 
标识性参数(如分页、过滤条件) | GET /api/user?id=1 | 
| Form-data | 请求体中 | 多段分隔(MIME multipart) | 上传文件、图片、混合数据 | Content-Type: multipart/form-data | 
| Urlencoded | 请求体中 | key=value&key=value | 
表单提交(纯文本字段) | Content-Type: application/x-www-form-urlencoded | 
| Raw JSON | 请求体中 | JSON 字符串 | 现代 API 请求(REST) | Content-Type: application/json | 
在传参的时候,有些参数可能带一些特殊字符,比如&,"等等,因此需要编码。
编码方式如下:
| 方法名 | 所属命名空间 | 编码标准 | 常见用途 | 是否限制长度 | 特点 | 
|---|---|---|---|---|---|
Uri.EscapeDataString() | 
System | 
RFC 3986 | 用于单个参数值 | ✅ 有(约 32,766) | 严格编码规则,推荐用于 query 值 | 
Uri.EscapeUriString() | 
System | 
RFC 3986 | 用于整条 URL | ✅ 有 | 不会转义 /、?、# | 
HttpUtility.UrlEncode() | 
System.Web | 
HTML 表单标准 | 表单、查询字符串 | ⚠️ 无显式限制 | ASP.NET 中最常用 | 
WebUtility.UrlEncode() | 
System.Net | 
HTML 表单标准 | 通用 URL 编码 | ⚠️ 无显式限制 | .NET 4.0+,轻量级 | 
HttpUtility.HtmlEncode() | 
System.Web | 
HTML 实体 | 防止 XSS 攻击 | ❌ 无限制 | 用于网页显示 | 
Uri.UnescapeDataString() | 
System | 
RFC 3986 | 解码 | ✅ 有 | 和 EscapeDataString 对应 | 
HttpUtility.UrlDecode() | 
System.Web | 
HTML 表单标准 | 解码 | ❌ 无限制 | 与 UrlEncode() 配对 | 
其中HttpUtility.UrlEncode() 主要用于参数编码,需要有对应的解码;Uri.EscapeDataString()也是用于参数编码,但是可以不解码,因为大部分服务器端框架(包括 ASP.NET、Web API、MVC)在接收请求时,会自动为你解码 URL 参数。
完结撒花~