【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 参数。

完结撒花~

相关推荐
zhanghaha131410 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
qq_4480111612 小时前
C语言中的动态内存分配
c语言·开发语言·php
汉字萌萌哒12 小时前
2024CSP-J入门级C++真题详解
开发语言·c++
arbboter13 小时前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具
微小冷13 小时前
海康威视相机C#二次开发环境配置
数码相机·c#·.net·海康威视·相机开发
汉字萌萌哒14 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
叠层归一研究院14 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
小雨笙笙14 小时前
C语言:变量三属性——存储类型
c语言·开发语言
果果燕15 小时前
C++ 学习笔记(二):类与对象—— 构造函数与析构函数
开发语言·c++
江畔柳前堤15 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php