【C#】HTTP中URL编码方式解析

前言:当调用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 参数。

完结撒花~

相关推荐
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹2 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
kybs19912 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
孙启超2 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int2 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
XUEYUAN52122 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CoderYanger2 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法