【问题标题】:Nodejs server accepting a PHP cURLNodejs 服务器接受 PHP cURL
【发布时间】:2014-05-27 23:47:58
【问题描述】:

我有一个托管 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);

【问题讨论】:

    标签: php node.js curl


    【解决方案1】:

    你需要设置 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 'HTTP/1.1 200 OK Set-Cookie: sid=475e2c66dcb996b2de367f4c626f0d2c3c3a47df4d83ec9fd251560ff1c5e57df1d5d1f6dafb71fd101c5edc065610bd0c5a1bcdb653cdcd6ba23de0677d4864; 路径=/; httponly 内容长度:46 内容类型:应用程序/json 日期:2014 年 4 月 14 日星期一 06:04:05 GMT 连接:保持活动状态

    {"name":"酒类 2","id":"0bef0d72a33b2be8"}' (length=342)

    【讨论】:

      【解决方案2】:

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

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

      但我收到:“HTTP/1.1 404 Not Found” 怎么了? 如果我通过 linx 连接到服务器,它可以无缝运行。

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

      【讨论】:

        猜你喜欢
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 2022-01-02
        • 2016-09-25
        • 2021-02-19
        • 2015-11-11
        相关资源
        最近更新 更多