Returned error: invalid argument 0: json: cannot unmarshal non-string into Go value of type common.H

区块链使用web3.js与geth以太坊节点进行通讯时,有时候节点会响应Returned error: invalid argument 0: json: cannot unmarshal non-string into Go value of type common.H

出现该问题的情况很多,但是从错误信息来看是在调用远端接口时参数不正确导致(如:参数类型不正确)。

下面只举例说明参数类型不正确场景:(其他情况需要自行调试,资料比较少,需要慢慢领悟)

1. 启动geth控制台,并将日志输出到文件 2>~/geth.log

 geth console --kiln --rpc.gascap 0 --rpc.txfeecap 0 --http -http.api web3,eth,net,personal,debug --http.corsdomain '*'  --ws --ws.api web3,net,eth,personal,debug --allow-insecure-unlock --vmdebug 2>~/geth.log

2. 控制台模拟错误,getTransaction、getTransactionReceipt方法参数为16进制事务hash,所以传入的123类型不正确最终体现为:invalid argument 0:...

3. 实际上使用js、ts编写 服务时,可能为异步形式调用方法,不进行同步await时,可能不知道调用哪个方法导致的这种错误(该错误响应并没有指出调用什么方法导致的😶),此时可以在本地环境中

在使用 `ossutil` 执行 `ListObjectsV2` 操作时遇到 HTTP 400 错误,错误代码为 `InvalidArgument`,通常表示请求中包含的参数无效或不符合预期。以下是可能的原因及相应的解决方法: ### 1. 参数格式错误 确保请求中使用的参数格式正确。`ListObjectsV2` 操作支持的参数包括 `prefix`、`delimiter`、`start-after`、`max-keys` 等。如果参数值格式不正确,例如 `max-keys` 超出允许的范围(0 到 1000),可能会导致此错误。检查参数值是否符合要求,并进行适当调整。 例如,`max-keys` 的值必须是一个整数,且不能超过 1000: ```bash ossutil ls oss://bucket-name --max-keys 1000 ``` ### 2. 编码问题 如果请求中包含特殊字符,确保这些字符已经正确编码。URL 编码不正确可能导致服务器无法解析参数,从而引发 `InvalidArgument` 错误。检查请求中的参数是否使用 UTF-8 编码,并确保特殊字符已正确转义。 ### 3. 签名问题 如果请求需要签名,确保签名生成过程正确无误。签名是访问控制的一部分,用于验证请求的合法性。签名过期或计算错误可能导致请求被拒绝。检查签名生成过程,确保使用了正确的密钥和算法,并且签名未过期。 ### 4. 版本兼容性问题 确保使用的 `ossutil` 版本与 OSS 服务端版本兼容。某些旧版本的 `ossutil` 可能不支持 `ListObjectsV2` 操作,或者存在已知的 bug。更新到最新版本可能会解决此问题。 ### 5. 权限问题 检查用户是否有权限执行 `ListObjectsV2` 操作。如果用户的访问策略(如 RAM 角色或 Bucket 策略)未授予相应的权限,请求将被拒绝。确保用户具有足够的权限来执行此操作。 ### 6. 调试工具 使用调试工具(如 `curl`)手动构造请求并发送到 OSS 服务端,以便更详细地查看请求和响应内容。这有助于识别请求中的具体问题。例如: ```bash curl -X GET "https://bucket-name.oss-cn-region.aliyuncs.com/?list-type=2&max-keys=100" -H "Authorization: OSS <your-access-key-id>:<your-signature>" ``` 通过以上方法,可以逐步排查并解决 `ossutil ListObjectsV2` 操作中的 `InvalidArgument` 错误。确保所有参数格式正确、编码无误、签名有效,并且用户具有足够的权限执行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值