Neo4j, используя Traverser через REST HTTP - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь использовать Neo4js Traverser через HTTP API.Если я использую его с помощью curl в командной строке, он работает нормально, но когда я пытаюсь использовать его с помощью curl через PHP, я все время получаю сообщение об ошибке.

Это команда 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 / data/ узел / 5 / траверса / узел.Причина:

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

Есть идеи?

1 Ответ

1 голос
/ 25 мая 2011

Похоже, у вас есть кавычки перед строкой 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...