2013-04-03 94 views
0

錯誤:參數丟失或不發送爲JSON數組PHP捲曲

{"jsonrpc":"2.0","id":0,"error":{"code":1,"message":"Parameters missing or not sent as an JSON array. "}} 

我的代碼:

<?php 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Accept: text/plain, */*; q=0.01")); 
curl_setopt($ch, CURLOPT_URL, 'http://example.com/rpc/ClientApi?_session=XX'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('method' => 'AdsApi.giveAdLifeByCategory','params' => '["Ads4Life"]', 'id' => '0'))); 
curl_setopt($ch, CURLOPT_POST, 1); 
$result = curl_exec($ch); 

?> 

我試圖仿效這個請求:

[{"method":"AdsApi.giveAdLifeByCategory","params":["Ads4Life"],"id":0}] 

正確答案:

[{ 
    "jsonrpc": "2.0", 
    "id": 0, 
    "result": { 
     "status": true, 
     "timeStamp": 0 
    } 
}] 

可能是什麼問題?

回答

0

錯誤包圍曝光:

... 'AdsApi.giveAdLifeByCategory','params' => '["Ads4Life"]', 'id' => '0'))); 
               ^---  ^-- 

你的「模擬」樣本具備圍繞其braockets,但你把它們嵌入在你的數組鍵定義,所以當產生JSON,它會實際上是:

... "params": "[\"Ads4Life\"]" ... 

[""]嵌入在字符串內。

也許應該只是

... 'AdsApi.giveAdLifeByCategory','params' => array('Ads4Life'), 'id' => '0'))); 
                ^^^^^^^^^^ 
+0

試過'陣列( '方法'=> 'AdsApi.giveAdLifeByCategory', 'PARAMS'=> 'Ads4Life', 'ID'=> 0)'和仍然得到同樣的錯誤。 – madziikoy 2013-04-03 19:42:19

+0

啊是的。 ads4life實際上是json字符串內部的一個ARRAY,所以您必須將它定義爲PHP級別的數組。更新了答案中的「應該」部分。 – 2013-04-03 19:43:33

+0

哦,謝謝。這工作。 :) 好人。可以在1分鐘內接受答案。 – madziikoy 2013-04-03 19:44:12