2017-01-13 13 views
1

PHPからのCURLを使用してnodeJSにリクエストを作成しようとしました。 ここに私のコードです:PHPからNodeJsサーバへのHTTP投稿リクエスト

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

しかし、それは動作しません。データvarにbool(FALSE)を受け取りました。

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

は、返信いただきありがとうございますが、それはなかったです。私のラップトップにインストールされているのでnodejsがこのポートのhttp-postを制限しているので、私のウェブホストはうまくいきますが、私のPHPプロジェクトはホストされています。ありがとう。 –

+0

私はあなたの問題を解決したことを知ってうれしいよ:) –

関連する問題