Postman发送GET请求字符被替换的原因排查(C# API)
问题原因及解决方法
这不是Postman的特殊处理,而是HTTP URL查询参数的编码规则导致的:在application/x-www-form-urlencoded格式(GET请求默认的参数格式)中,+被定义为空格的等价编码字符,ASP.NET的[FromUri]参数绑定会遵循这个规则,自动把+解码成空格。
解决办法:
方法1:手动编码
+字符
在请求的URL参数里,把所有+替换为%2B(+的URL编码值)。比如原参数是cus=123+456,改成cus=123%2B456,后端就能正确接收到123+456。方法2:用Postman的Params面板自动编码
不要直接在URL栏里拼接参数,改用Postman的「Params」标签页添加参数:在Key栏填cus,Value栏直接输入带+的字符串,Postman会自动对特殊字符进行URL编码,发送时把+转为%2B,后端就能正确解析。后端临时处理(不推荐,不符合标准)
如果无法修改前端请求,可以在控制器方法里手动把空格替换回+:public IHttpActionResult GetDescifrarCusResponse([FromUri] string cus = null) { if (!string.IsNullOrEmpty(cus)) { cus = cus.Replace(" ", "+"); } return Ok(ExecGetDescifrarCusResponse(cus)); }
内容的提问来源于stack exchange,提问作者pepaSoftware
相关产品推荐
相关产品推荐

