我有一个托管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);
答案 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我得到此错误。