Задать вопрос
KwI
@KwI
Frontend developer

Выполнить cURL запрос из PHP?

Привет!

Есть вот такой запрос cURL:

curl -H Content-Type:application/json -X PUT -d 'the_value' localhost:7474/db/data/node/123/properties/foo

Собственно, проблема в том, что передаваемые данные — строка, а не JSON-объект… Neo4j серверу это очень не нравится.

Как мне такой запрос сделать из php? Как я ни пытался — ошибка 500.

Подскажите пожалуйста, какие curl_setopt надо расставить, чтобы такой запрос сделать?
  • Вопрос задан
  • 4845 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
KwI
@KwI Автор вопроса
Frontend developer
Разобрался. Первое — сам сервер Neo4j очень жестко относится к приходящим данным. Поэтому строку надо было упаковать так: '«some string»\n'
Далее — запрос делать с отправлением файла. По крайней мере так получилось, и хватит )
$filename = 'test/tempfile'; //открываем темповый файл
$dataToPut = $_POST['dataToPut']; //Извлекаем из поста данные
$url = $_address; //урл
$fh = fopen('test/tempfile', 'w+');
if ($fh == false)
{
//echo("false");
}
fwrite($fh, $dataToPut); //Загоняем строку в файл
fseek($fh, 0);
$ch = curl_init();
curl_setopt($ch, CURLOPT_INFILE, $fh);
//curl_setopt($ch, CURLOPT_INFILESIZE, $length);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_PUT, 4);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array('Content-type: application/json', 'Expect: '));
$response = curl_exec($ch);
fclose($fh);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
taliban
@taliban
php программист
На сколько я разбираюсь в JSON, JSON — строка и есть, это не обьект, так же как и XML — строка. Может проблема в другом? Либо Ваш JSON не валиден? Нет ваозможности посмотреть логи сервера? Думаю там может быть ответ
Ответ написан
Kindman
@Kindman
А, какие-нибудь другие запросы нормально проходят?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы