请求demo

//请求demo
 public function requestDemo(){
        $pa = json_encode([
            'param1'=>'',
            'param2'=>''
        ]);
        $array = $this->http_post_data($pa, $this->generateHeader(),'接口地址');
        $json_string = $array[1];
        $res = json_decode($json_string,true);
        return response()->json($res, 200, ['charset' => 'utf-8']);
    }
//curl header封装
private function generateHeader(){

        $millisecond = $this->getMillisecond();//为服务端时间前后5分钟内可以访问
        $nonceStr = $this->getNonceStr(16);//10到50位字符串
        $appId = '';//芸签appId
        $appSecret = '';//芸签appSecret
        $header=[
            'appId:'.$appId,
            'signature:'.$this->getSignature($appId,$appSecret,$nonceStr,$millisecond),
            'nonceStr:'.$nonceStr,
            'timestamp:'.$millisecond,
            'Content-Type:application/json',
        ];
        return $header;
    }
    //计算请求签名值
    private function getSignature($appId, $appSecret,$nonceStr,$millisecond)
    {
        $s = $appId.'_'.$appSecret.'_'.$nonceStr.'_'.$millisecond;
        $signature = strtoupper(md5($s));

        return $signature;
    }
    //模拟发送POST请求
    /**
     * 模拟发送POST 方式请求
     * @param $url
     * @param $data
     * @param $projectId
     * @param $signature
     * @return array
     */
    private function http_post_data( $data, $header,$url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
        ob_start();
        curl_exec($ch);
        $return_content = ob_get_contents();
        ob_end_clean();
        $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        //echo curl_errno($ch);
        return array($return_code, $return_content);
    }
    public function curl_post($postdata = '', $header = '', $url,$options = array())
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
        if (!empty($options)) {
            curl_setopt_array($ch, $options);
        }
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    /**
     *
     * 产生随机字符串,不长于50位
     * @param int $length
     * @return 产生的随机字符串
     */
    private function getNonceStr($length = 50)
    {
        $chars = "abcdefghijklmnopqrstuvwxyz0123456789";
        $str ="";
        for ( $i = 0; $i < $length; $i++ )  {
            $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
        }
        return $str;
    }
    //获取当前时间戳(毫秒级)
    private function getMillisecond()
    {
        list($s1, $s2) = explode(' ', microtime());

        return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
    }