2017-01-13 4 views
1

Я попытался сделать запрос к моему nodeJS, используя CURL из PHP. Вот мой код:HTTP-запрос на отправку с PHP на сервер NodeJs

$host = 'http://my_ip:8080/ping'; 
$json = '{"id":"13"}'; 

$ch = curl_init($host); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Content-Type: application/json', 
      'Content-Length: ' . strlen($json)) 
    ); 
$data = curl_exec($ch); 
var_dump($data); 

Но это не работает. Я получил bool (FALSE) в данных var.

NodeJS:

app.use(router(app)); 
app.post('/ping', bodyParser, ping); 
port = 8080; 
app.listen(port, webStatus(+port)); 
function* ping() { 
    console.log(this.request.body); 
    this.body = 1; 
} 

Я попытался с NodeJS Http столбу, и она работает:

http.post = require('http-post'); 
http.post('http://my_ip:8080/ping', { id: '13' }, function (res) { 
    res.on('data', function (chunk) { 
     console.log(chunk); 
    }); 
}); 

Является ли это что-то не так с PHP-код?

PS: CURL включен в PHP.

ответ

0

Ваша функция ping не очень хорошо реализована. Я думаю.

Кроме того, для отправки ответа HTTP необходимо вызвать метод send.

Вы должны объявить функцию следующим образом:

app.use(bodyParser); // You can use a middleware like this too. 

app.post('/ping', ping); 

function ping (req, res) { 
    console.log(req.body); // Since you use `bodyParser` middleware, you can get the `body` directly. 

    // Do your stuff here. 

    res.status(200).send('toto'); 
} 
+0

Спасибо за ответ, но не было. Мой веб-хост, ограничивающий http-сообщение на этом порту, с nodejs работает хорошо, потому что был установлен на моем ноутбуке, но мой проект php размещен, я меняю порт на 88, и он работает хорошо. Благодарю. –

+0

Я рад узнать, что вы исправили свою проблему :) –

 Смежные вопросы

  • Нет связанных вопросов^_^