惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Vercel News
Vercel News
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
量子位
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
IT之家
IT之家
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)

博客园 - 尚書

类似于GROUP BY SUM() 用于字符串连接的语句 UBUNTU 14.04 INSTALL nsenter UBUNTU 14.04 DOCKER 1.4.1 Redis On Windows Run Redis On Windows C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256 Random Mongo的主从同步,以及备份与恢复 Mongodb 更多操作 Mongodb的备份/还原 mongodump/mongorestore itextsharp多语言(中日韩等)填表解决 [C#]HttpWebRequest、HttpWebRespoonse、WebRequest and WebResponse、WebClient差异 [筆記] string.Format 格式整理 微软放出五大语种Windows 8消费者预览版ISO镜像 [SQL SERVER] 数字补0 [SQL SERVER] 用SQL语句读取Execl数据 [SQL SERVER] 跨库查询--分布式查询 CSharpJExcel Read/Write Excel Install MongoDB as a windows service
[MVC] 获取请求时缺少"+"的处理办法 How to fix th...
尚書 · 2012-02-03 · via 博客园 - 尚書

最近一段时间在做跟某公司数据对接的工作,我们双方的技术人员在观察对接数据的时候,发现部分数据无法通过MD5加密验证。

原始代码如下

1 [HttpPost]
2 public ActionResult Index(string lcData)
3 {
4     string lcDataDecode = HttpUtility.UrlDecode(lcData, Encoding.UTF8);
5     string response = DoSometing(lcDataDecode);
6 
7     return RedirectToAction("Index");
8 }

通过双方数据对比,发现上述代码中lcData的值是已经通过Decode之后的值,并不是原始的数据。由于这次Decode,导致数据中的加号“+”被过滤掉。

请参考一下dudu的文章HttpUtility.UrlEncode、HttpUtility.UrlDecode、Server.UrlEncode、Server.UrlDecode的区分与应用

在网上查找了一些解决办法,很多人提到用 Request.QueryString["key"].Replace(" ", "+"); 来处理。但是我们的数据无法这样处理,因为传递的数据中本身就有空格“ ”的存在。

因此,我们寻找到了下面的方法

 1 [HttpPost]
 2 public ActionResult Index(string lcData)
 3 {
 4     Regex r = new Regex(@"lcData=(?<value>[^&=]+)"); //针对我们的需求,如果需要解析所有的可以用(?<name>[^&=]+)=(?<value>[^&=]+)
 5     Match m = r.Match(Request.Params.ToString());
 6 
 7     lcData = m.Groups[1].Value;
 8     string lcDataDecode = HttpUtility.UrlDecode(lcData, Encoding.UTF8);
 9 
10     string response = DoSometing(lcDataDecode);
11 
12     return RedirectToAction("Index");
13 }

希望能帮助到其他有需要的朋友。