PHP的curl_setopt 请求方法封装
function doPost($url, $jsonData)
{
return $this->httpPostJson($url, $jsonData);
}
/**
* post 业务请求
* @param string $url
* @param string $jsonData
*/
protected function httpPostJson($url, $jsonData)
{
// 获取当前时间戳
$timeStamp = time() * 1000;
// 获取签名
$sign = $this->getSign($timeStamp);
// 封装请求头
$header = [
'Content-Type: application/json; charset=utf-8',
'X-ald-Cid: ' . $this->corpid,
'X-ald-Sign: ' . $sign,
'X-ald-TimeStamp: ' . $timeStamp,
'Content-Length: ' . strlen($jsonData)
];
// 传入http 参数
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// https 支持 - 对认证证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// 请求数据放这里
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
// header
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
// 连接超时时间,尝试连接所花费的时间,不包括传输数据的时间
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// 超时时间,包括连接时间和数据传输时间
curl_setopt($ch, CURLOPT_TIMEOUT, 7);
//请求服务器
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// $this->writeLog($url, json_decode($jsonData, true), $header, $response);
//组织,返回结果和响应码
return [
$httpCode,
$response
];
}
/**
* 签名算法
* @param int $timeStamp
* @return string 返回签名数据
*/
protected function getSign($timeStamp)
{
$sign = "appId={$this->appId}&appSecret={$this->appSecret}&timeStamp={$timeStamp}";
return strtoupper(md5($sign));
}