如何解决JSONRPC sendtoaddress 返回 "result":null,"error",手动运行 cURL 有效
我无法找出为什么我的脚本返回 "result":null,"error" 而不是成功的交易。
此 curl 命令在手动运行时有效;
curl --user username:password --data-binary '{"jsonrpc": "1.0","id":"curltest","method": "sendtoaddress","params": ["someaddress",0.001] }' -H 'content-type: text/plain;' http://".199.42.160.41:8332
这是我用来尝试复制上述有效 curl 命令的代码;
$url = "http://199.42.160.41:8332";
$address = "address";
$address = '"'.$address.'"'; //Adding double quotation marks around the address.
$amount = 0.001;
$bounty = $address.','.$amount;
$payload = ["jsonrpc" => "1.0","id" => "curltest","method" => "sendtoaddress","params" => [$bounty] ];
$payload=json_encode($payload);
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_USERPWD,$user . ":" . $pass);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch,CURLOPT_POSTFIELDS,$payload);
curl_setopt($ch,CURLOPT_POSTREDIR,3);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$res=curl_exec($ch);
echo "<br/><br/>";
echo "Result from attempting to send transaction is below this line</br>";
print_r($res);
curl_close($ch);
通过上面我可以看到 $payload 设置如下;
$payload 设置如下;
Array ( [jsonrpc] => 1.0 [id] => curltest [method] => sendtoaddress [params] => Array ( [0] => "sendtoaddress",0.001 ) )
我遗漏了什么或做错了什么?
编辑:我的 $payload 在转换为 jsonrpc 后看起来像这样
{"jsonrpc":"1.0","method":"sendtoaddress","params":["someaddress,0.001"]}
据我所知,我需要让它看起来像这样;
{"jsonrpc":"1.0","params":["someaddress",0.001]}
解决方法
发现并修复了问题。 $payload 不是我需要的,我需要使用两个变量才能为 jsonrpc 正确格式化。
//$payload = ["jsonrpc" => "1.0","id" => "curltest","method" => "sendtoaddress","params" => [$bounty] ];
$payload = ["jsonrpc" => "1.0","params" => [$address,$amount] ];
既然 $payload 设置正确,脚本就可以工作了!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。