1、我方系统与对端系统有一个对接接口,对端系统定时通过HTTP消息把数据发送给我方系统

2、接口传输的数据如下: { "type": 1,  "date": "2017-10-29 00:00:00", "saleId": "M16A00_RR171029000040+" }

3、在调试的过程中,总是报错:10020, "签名错误"

4、经过调试发现接收到的数据为: { "type": 1, "date": "2017-10-29 00:00:00", "saleId": "M16A00_RR171029000040 " }

5、比对一下发送的数据和接收到的数据之和,发现加号变成了空格

6、这个我使用Java进行post方式测试,没发现这个问题,而对端是使用.NET进行发送的,怀疑是.NET内部进行编码的问题

7、查找了一下,发现由于历史的原因,表单使用的Url编码实现并不符合最新的标准,在每个表单域被Url编码之后发送到服务器的时候,加号被编码成了空格。

8、解决方法:使用HttpWebRequest发送POST的时候,需要用HttpUtility.UrlEncode进行编码,将特殊符号进行编码。

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐