开发者

Neo4j using Traverser via REST HTTP

I'm trying to use Neo4js Traverser via the HTTP API. If I use it via curl on the command line it works fine, but when I try to use it via curl through PHP I get an error all the time.

This is curl command:

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

And this is my PHP Code:

$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);

This is the err开发者_Python百科or I get:

HTTP ERROR 500

Problem accessing /db/data/node/5/traverse/node. Reason:

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

Any Ideas?


Looks like you have quotes before the JSON string:

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

Might want to try this:

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

EDIT: Although better yet, I'd use json_encode with an associative array to ensure proper escaping if necessary:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜