2011-05-25 35 views
0

我想通過HTTP API使用Neo4js Traverser。 如果我通過curl在命令行中使用它,它工作正常,但是當我嘗試通過PHP使用curl時,我始終得到一個錯誤。Neo4j使用Traverser通過REST HTTP

這是curl命令:

curl -H Accept:application/json -H Content-Type:application/json -X POST -d '{"order":"depth first"}' http://localhost:7474/db/data/node/5/traverse/node 

這是我的PHP代碼:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://localhost:7474/db/data/node/5/traverse/node"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept:application/json', 
    'Content-Type:application/json' 
)); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '"{"order": "depth first"}"'); 

$output = curl_exec($ch); 

echo '<pre>'; 
var_dump(curl_getinfo($ch)); 
var_dump($output); 

curl_close($ch); 

這是錯誤我得到:

HTTP錯誤500

訪問 /db/dat時出現問題一個/節點/ 5 /橫動/節點。原因:

java.lang.String cannot be cast to java.util.Map 

什麼想法?

回答

1

看起來你有JSON字符串之前的報價:

curl_setopt($ch, CURLOPT_POSTFIELDS, '"{"order": "depth first"}"'); 

可能要試試這個:

curl_setopt($ch, CURLOPT_POSTFIELDS, '{"order": "depth first"}'); 

編輯:雖然更好,但我會用json_encode與關聯陣列以確保在必要時正確轉義:

$json_data = array("order" => "depth first"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json_data)); 
+0

感謝您的提示,現在它的作品! – prehfeldt 2011-05-25 12:00:16