【发布时间】:2019-02-05 10:54:50
【问题描述】:
我想知道这一点,因为我正在使用 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';
in then 返回值:New
我还在curl_getinfo() 中收到了[http_code] => 0
我搜索了很多,但没有运气,请帮助我。
节点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 尝试时收到了响应。 注意:我从 localhost 运行 PHP 和 Node
【问题讨论】:
-
其实php代码是正确的,请添加nodejs代码你如何响应请求?
-
@num8er 请看节点js代码
-
哪个框架?开心吗?
-
我正在使用 hapi js
-
我已经回答,修复你的 nodejs 代码,你无法通过从内部范围执行
return到达外部范围