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));
    }