Neo4j通过REST HTTP使用Traverser

时间:2011-05-25 11:03:10

标签: php curl neo4j

我正在尝试通过HTTP API使用Neo4js Traverser。 如果我在命令行上通过curl使用它可以正常工作,但是当我尝试通过PHP通过curl使用它时,我总是会遇到错误。

这是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 ERROR 500

     

访问问题   /分贝/数据/节点/ 5 /横动/节点。原因是:

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

任何想法?

1 个答案:

答案 0 :(得分: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));