Nodejs服务器接受PHP cURL

时间:2014-04-14 06:02:06

标签: php node.js curl

我有一个托管3个不同api的节点服务器,然后我为与节点服务器通信的不同应用程序运行单独的服务器。尝试卷曲到节点服务器时,我似乎得到未定义/空字符串。它们可以在rEST控制台或PostMan上发布,这些是Google Chrome中的应用程序。但是当我尝试从命令行或PHP中进行cURL时,它不起作用。

我在cURL调用中尝试过几种不同的东西。我想知道为什么这不起作用。我可以在服务器端或客户端上做些什么来修复它。

感谢。

EX cURL电话:

$host = 'http://api.codelabs.io:2403/products';
$json = '{"name":"Wine type 2"}';

$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_PORT, 2403);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$data = curl_exec($ch);

2 个答案:

答案 0 :(得分:2)

您需要设置HTTPHEADER,我也注释掉了端口,因为它不是必需的......

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($json))
);

工作代码..

<?php

$host = 'http://api.codelabs.io:2403/products';
$json = '{"name":"Wine type 2"}';

$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($ch, CURLOPT_PORT, 2403);   //<----- Commented out !
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(    //<--- Added this code block
        'Content-Type: application/json',
        'Content-Length: ' . strlen($json))
);
$data = curl_exec($ch);
var_dump($data);

输出:

  

string&#39; HTTP / 1.1 200 OK Set-Cookie:   SID = 475e2c66dcb996b2de367f4c626f0d2c3c3a47df4d83ec9fd251560ff1c5e57df1d5d1f6dafb71fd101c5edc065610bd0c5a1bcdb653cdcd6ba23de0677d4864;   路径= /; httponly内容长度:46内容类型:application / json   日期:星期一,2014年4月14日06:04:05 GMT连接:保持活力

     

{&#34; name&#34;:&#34; Wine type 2&#34;,&#34; id&#34;:&#34; 0bef0d72a33b2be8&#34;}&#39; (长度= 342)

答案 1 :(得分:1)

我正在尝试使用以下命令连接到本地节点脚本:

<?php
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($json))
);
$host = '127.0.0.1';
$json = '{"   
deviceToken":"975247bb6a1f7362ac34272888b9ae82b571d51ade36c5a18a7235a72de55079","topic":"com.meditation.iPujaPro","badge":"3","sound":"ping.aiff"}';

$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_PORT, 3000);   //<----- Commented out !
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(    //<--- Added this code block
    'Content-Type: application/json',
    'Content-Length: ' . strlen($json))
);
$data = curl_exec($ch);
var_dump($data);
?>

但我收到:&#34; HTTP / 1.1 404 Not Found&#34; 怎么回事? 如果我通过linx连接到服务器,它可以无缝地工作。

此外,如果我连接到任何其他网址或端口,它工作正常,但如果我使用侦听节点js文件的端口3000我得到此错误。