использование curl в php для публикации данных с faye

По словам автора faye, я могу отправлять сообщения с любой платформы
, а формат для публикации сообщения с помощью curl:

curl -X POST http://192.168.1.101:8000/faye -H 'Content-Type:
    application/json' -d '{"channel":"/foo","data":{"hello":"world"}}'

Я форматирую предыдущую строку для использования в php

$data = array("channel" => "/one", "result" => "Hello World from PHP!!");  
$data_string=json_encode($data);
$ch = curl_init('http://192.168.1.101:8000/faye');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);                                                          
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);                                                              
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
'Content-Type:application/json','Content-Length:'strlen($data_string)));
$result = curl_exec($ch);

Почему-то подписчик на первый канал НЕ ПОЛУЧАЕТ результат

функция публикации в java-скрипте работает без проблем (см. строку ниже)

var publication = client.publish('/one',{ result: 'Hello World from JS'});<br/>

Пожалуйста, дайте мне знать, что отсутствует или моя ошибка спасибо


person edino    schedule 08.04.2012    source источник
comment
Разве результат не должен быть данными?   -  person Timothy Meade    schedule 09.04.2012
comment
Я сделал ошибку, настроив функцию публикации на curl. Правильное значение для $data_string должно быть: 1) $data_string = '{channel:/one,data:{result:Hello World from PHP!!}}'; ИЛИ 2) $data = array(channel =› /one, data =› array (результат =›HelloWorld from PHP!!)); $data_string = json_encode($данные); спасибо!!!!!!!!!   -  person edino    schedule 09.04.2012
comment
@edino: Если вы решили проблему самостоятельно, вы должны написать решение в качестве ответа и принять ответ. Это пометит вопрос как отвеченный и перестанет тратить время на понимание вашей проблемы людьми (такими как я) только для того, чтобы обнаружить, что вы уже решили ее в комментариях. Спасибо.   -  person David Newcomb    schedule 18.10.2014


Ответы (1)


Этот работает для меня:

$data = array("channel" => "/one", "data" => array ("result"=>"HelloWorld from PHP!!"));
$data_string=json_encode($data);
$ch = curl_init('http://localhost:8000/faye');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);                                                          
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);                                                              
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:application/json'));
echo $result = curl_exec($ch);
person Luis Falcón    schedule 25.03.2017