RestSharp 加号变空格 + HTTP 请求
背景介绍
与{公司Y}做接口对接工作,
然后我根据{公司Y}提供的Demo写了一个请求,
放到Postman中请求,是可以正确的返回数据的.
但是,我在程序中,使用{RestSharp}模拟请求的时候,
{公司Y}接口总是会返回,解密失败的提示...
先上HTTP请求
public static string Test()
{
var client = new RestClient("http://api.test.com/");
var request = new RestRequest("Users", Method.POST);
//这个地方也是一个坑↓
//request.AddHeader("Accept", "text/html, application/xhtml+xml, */*");
//request.AddHeader("Accept", "*/*");
request.AddHeader("Accept", "text/html");
request.AddParameter("key", "peXUsje73l2Z3r6g5aacVKcJ++vD+2IsQB6DaUlD0Elgg=", ParameterType.GetOrPost);
return client.Execute(request).Content;
}
发现问题所在→"+"
仔细看了下{公司Y}提供的key值,里面含有"+"...
所以情况差不多就是,
{公司Y}提供了一个,自己解密不了的key...
确认问题所在...
我使用抓包工具{Wireshark},
比较了一下postman发出的请求和程序发出的请求...
确认了,确实是因为程序发出的请求会将"+"号替换为" "(空格)
试过将"+"url编码为"%2b"
试着将"+"号改变为"%2b",
但是{公司Y}会提示加密串的长度太长...
毕竟是和其它公司对接,
如果是自己负责HTTP的请求和响应,
那肯定是HTTP请求的时候,先将参数Url编码一下,
HTTP响应的时候,先将参数Url解码一下...
解铃还须系铃人...
最终{公司Y}提供了一个自己可以解密的key...(不含"+"号)
不解之地
为什么postman可以,但是程序使用RestSharp请求的不行呢...
postman底层将"+"号处理了一下?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了