/**
* @param $method //请求接口名
* @param $array //带过去参数
* @return array ['status'] 状态1成功 状态2失败
* @return array ['msg'] 消息
* @return array ['data'] 返回数据
*/
function TdHttpsPost($method, $array = [])
{
$td_info = C('APP');
$data['secretKey'] = $td_info['TD_KEY'];//秘钥
$data['serverId'] = $td_info['TD_SERVER'];//服务器id
$data['module'] = $td_info['TD_MODULE'];//模型
$data['method'] = $method;//模型
$data['param[0]'] = json_encode($array); //带参
$ch = curl_init();
// 设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $td_info['TD_URL']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($ch, CURLOPT_POST, 1); // 发送一个 常规的Post请求
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // Post提交的数据包
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // 设置超时限制防止死循环
curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //获取的信息以文件流的形式返回
$result = curl_exec($ch); // 执行操作
//通信失败 写日志
if (curl_errno($ch)) {
curl_close($ch); // 关闭CURL
TdHttpLogsRecord($method, '与TD通信失败' . $return['msg'], 2, $result);
return [
'status' => 2,
'msg' => 'Error:' . curl_error($ch), //抓捕异常
];
}
curl_close($ch); // 关闭CURL
$info = json_decode($result, true);
//服务器返回异常消息 写日志
if ($info['errorCode'] != 0) {
TdHttpLogsRecord($method, '通知服务器返回消息异常', 3, $result);
return [
'data' => $info,
'status' => 2,
'msg' => '通信正常,返回消息异常'
];
}
//通信正常 写日志
TdHttpLogsRecord($method, '更新缓存,通知服务器成功', 1, $result);
return [
'data' => $info,
'status' => 1,
'msg' => '成功'
];
}
网友评论