我使用Zend Framework 1.x在PHP中构建了一个API 目前只有一个webclient连接到API,但我们开始开发一个C#客户端。 我遇到了一个问题,这是它的工作原理:
这是我的问题所在。如果我发送没有重音的数据,一切正常。但如果有,Zend_Json :: encode($ params)返回一个以UTF8编码的json,因此创建的hmac与发送的hmac不同。
所以,我想知道(至于一些神秘的原因utf8_decode($ json)不起作用,我是否应该找到一种方法来比较utf8解码的json hmac应该作为C#客户端发送所有在utf8中编码的参数?
答案 0 :(得分:1)
C#客户端应发送UTF8
中编码的所有参数。由于definition of JSON状态:
JSON文本应以Unicode编码。默认编码是 UTF-8。
也可以是UTF-16 (BE or LE)
或UTF-32 (BE or LE)
。
如果你从数据生成JSON然后得到hmac应该有区别,对吧?
至少JSON还有两个符号? {
或}
那么哈希值应该与C#客户端发送的哈希值不同吗?
让客户端以JSON格式向您发送数据或在转换数据之前获取hmac。