PHP JSON-RPC - 无效方法

时间:2017-01-19 22:48:33

标签: php json curl

使用PHP curl进行JSON数据的POST。但是,每次提交数据时,都会显示错误消息:

{ "result" : null, "error":"Invalid method", "id": default, "jsonrpc": "2.0"" }

当然,我的第一步是使用Live HTTP Headers插件通过浏览器提交数据,因此我可以看到原始数据的样子:

{"jsonrpc":"2.0","method":"get","id":1,"params":["2145359"]}

所以我使用这段代码来格式化我的数据:

$post_info=json_encode(array("jsonrpc"=>"2.0","method"=>"get","id"=>1,"params"=>array("2145359")), JSON_UNESCAPED_SLASHES)

当我回显我的PHP数据时,它看起来完全相同:

{"jsonrpc":"2.0","method":"get","id":1,"params":["2145359"]}

然后我使用这个curl函数发布数据:

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, some_post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_info);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
$result=curl_exec($ch);
curl_close($ch);
return $result;

...和“无效方法”错误来了。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

将数据发布为“普通”帖子而不是json字符串。

要将数组转换为要与curlCURLOPT_POSTFIELDS一起使用的帖子数据,您可以使用http_build_query()方法。

示例:

$post_info = http_build_query(array(
    "jsonrpc" => "2.0",
    "method"  => "get",
    "id"      => 1,
    "params"  => array(
          "2145359"
    )
));