接收cURL错误:来自服务器的空回复

时间:2019-02-05 10:54:50

标签: php node.js curl hapijs

我想知道这一点,因为我正在使用PHP脚本中的cURL调用节点js API之一,我在服务器上做了console.log(),它显示接收到的有效负载和返回的响应如下,但在我的PHP中脚本,它将cURL错误显示为Empty reply from server

PHP代码:

$payload = json_encode(array('message_id' => 'test'));
  $ch = curl_init(URL);
  curl_setopt($ch, CURLOPT_URL, URL);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Content-Length: ' . strlen($payload)));
  // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
  $response   = curl_exec($ch);
  $curl_errno = curl_errno($ch);
  $curl_err   = curl_error($ch);
  $info       = curl_getinfo($ch);

服务器响应:

{ message_id: 'test' }
Executing (default): SELECT count(*) AS `count` FROM `messagenumbermaster` AS `messagenumbermaster` WHERE `messagenumbermaster`.`messagenumber` = 'test';

输入然后返回值:新建

我还收到了[http_code] => 0中的curl_getinfo() 我进行了很多搜索,但是没有运气,请帮助我。

Node js代码:

module.exports.checkDuplicate = {

  auth: false,
  validate: {
    payload: joi.object().required().keys({
      message_id: joi.string().required()
    })
  },
  handler: ((req, res) => {
    console.log(req.payload);
    try {
      return emailrdb.messagenumbermaster.count({
        where: {
          messagenumber: req.payload.message_id
        }
      })
      .then(count => {
        console.log('in then');
        if(count > 0){
          //duplicate
          console.log('resturned value: duplicate');
          return 'duplicate';
        }else{
          console.log('resturned value: New');
          return 'New';
        }
      })
    } catch (err) {
      console.log("checkDuplicate: ErrorLog", err);
      Log.createLog(`${new Date()}- checkDuplicate error: ${err}`);
      throw boom.boomify(err.message);
    }
  })
};

从RESTer尝试时,我收到响应。 注意:我正在从本地主机运行PHP和Node

1 个答案:

答案 0 :(得分:1)

由于您要从其他范围调用browser.find_element_by_xpath("//input[@id='usertext']").send_keys("help") ,因此您将从return 'New';返回,但是hapi处理程序仍在等待未被调用的返回。

您不能通过从内部范围执行then...来达到外部范围。

因此,请检查以下代码:

return