2017-01-19 40 views
0

使用PHP curl做POST JSON數據。然而,每一個數據提交的時候,會顯示錯誤消息:PHP JSON-RPC - 無效方法

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

當然,我的第一個步驟是使用Live HTTP頭插件通過瀏覽器提交數據,這樣我就可以看到數據是如何生的樣子:

{"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"]} 

然後我用這個捲曲功能發佈數據:

$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

什麼,具體而言,是在錯誤的無效方法? – wogsland

+0

我不知道,這是來自遠程服務器 –

+0

Magnus的完整消息,感謝您的建議,這是很好的一個。然而,實際上發佈的數據(瀏覽器發佈數據,它工作正常),不太確定爲什麼「獲取」用於後參數。 –

回答

1

將數據發佈爲「普通」帖子而不是json字符串。

要將陣列轉換爲與curlCURLOPT_POSTFIELDS一起使用的發佈數據,可以使用http_build_query()方法。

實施例:

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