接收卷曲错误:从服务器空回复

问题描述 投票:1回答:1

我想关于这个问题,我打电话从PHP脚本节点JS API使用卷曲的一个,我做console.log()在服务器上,它显示接收到的有效载荷和返回的响应如下,但我的PHP脚本它显示卷曲误差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(),请帮助我。

节点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和节点

php node.js curl hapijs
1个回答
1
投票

既然你打电话从不同范围return 'New';你从then...但高致病性禽流感处理程序返回仍在等待回报不会被调用。

你不能从内部范围做return达到外部范围。

因此,检查这些代码:

module.exports.checkDuplicate = {

  auth: false,

  validate: {
    payload: {
      message_id: joi.string().required()
    }
  },

  handler: async (req, res) => {
    try {
      const {message_id} = req.payload;

      const query = {
        where: {
          messagenumber: message_id
        }
      };
      const model = emailrdb.messagenumbermaster;
      const count = await model.count(query);

      // returning json response with fields: payload, message_id, result, duplicate, count
      return res.response({
               payload: req.payload,
               message_id,
               result: (count > 0 ? 'duplicate' : 'new'), 
               duplicate: count > 0, 
               count
             }).code(200);
      // return res({...}).code(200); // for hapi v16
    } 
    catch (error) {
      console.error('Got exception during "checkDuplicate" call. Backtrace:', error);
      Log.createLog(`${new Date()} - checkDuplicate error: ${err.message}`);
      throw boom.boomify(err.message);
    }
  }
};
© www.soinside.com 2019 - 2024. All rights reserved.