使用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;
...和“无效方法”错误来了。有什么建议吗?
答案 0 :(得分:1)
将数据发布为“普通”帖子而不是json字符串。
要将数组转换为要与curl
和CURLOPT_POSTFIELDS
一起使用的帖子数据,您可以使用http_build_query()
方法。
示例:
$post_info = http_build_query(array(
"jsonrpc" => "2.0",
"method" => "get",
"id" => 1,
"params" => array(
"2145359"
)
));