REST 常见问题
合约调用入参[inputParamListStr]不是JSON格式
如果参数是identity,传入的identity的样式为:
"inputParamListStr" : "[{\"data\":\"n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=\",\"empty\":false,\"value\":\"n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=\"}]"
identity 的具体数据,如果是Java语言,可以参考SDK接口,通过使用
Utils
的工具类Utils.getIdentityByName
,可以得到identity 参数
的传值。Identity identity = Utils.getIdentityByName(name); System.out.println(JSON.toJSONString(identity));
说明其中
data
和value
的值相同, 是通过原始值进行SHA256算法后,并通过base64编码后得到的。非Java语言,针对一个账户名称,如:testAccount
对 testAccount 字符串转成 byte(如有中文,按utf-8编码),进行hash(按照SHA256Hash算法)。
对以上的结果进行Base64编码,转成String格式。
将String格式的内容替换到 inputParamListStr 的JSON格式中的
data
的值和value
的值,如:n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=
byte32 类型的参数在调用合约中如何传值
参考以下SDK的接口示例: