简单说说开发中遇到的坑。这里用的是阿里云的视频直播服务,其实坑还是挺多的。阿里云手册上写的我就不重复了。直接上代码(基于tp3.2)试验签/***模拟GET*/publicfunctionhttpsGet($url,$post='',$json=true){date_default_timezone_set("UTC");$时间戳=日期('c');$Timestamp=explode('+',$Timestamp);if(is_array($post)){$public=['Version'=>'2016-11-01','Format'=>'json','AccessKeyId'=>$this->AccessKeyId,'SignatureMethod'=>'HMAC-SHA1','Timestamp'=>$Timestamp[0].'Z','SignatureVersion'=>'1.0','SignatureNonce'=>$this->uuid(),];$post=array_merge($public,$post);$Signature=self::getSignature($post,$this->AccessKeySecret);foreach($postas$key=>$value){$param.=$key.'='。$价值。'&';}$param.='Signature='.$Signature;$网址=$网址。“?”.$参数;}else{$urls=$url;}//初始化$curl=curl_init();//设置捕获的urlcurl_setopt($curl,CURLOPT_URL,$urls);//设置获取的信息以文件流的形式返回,而不是直接输出curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);//执行命令$result=curl_exec($curl);//获取服务器响应状态$httpCode=curl_getinfo($curl,CURLINFO_HTTP_CODE);//关闭URL请求curl_close($curl);$result=json_decode($result,true);返回$结果;}publicfunctiongetSignature($parameters,$access_key_secret){ksort($parameters);$StringToSign='GET&'.urlencode('/').'&';$q_str='';foreach($parametersas$key=>$kval){$q_str.=urlencode($key).'='.urlencode($kval).'&';}$q_str=substr($q_str,0,-1);$StringToSign.=urlencode($q_str);$ok_url=urlencode(base64_encode(hash_hmac("sha1",$StringToSign,$access_key_secret.'&',true)));返回$ok_url;}公共功能uuid($prefix=''){$chars=md5(uniqid(mt_rand(),true));$uuid=substr($chars,0,8)。'-';$uuid.=substr($chars,8,4)。'-';$uuid.=substr($chars,12,4)。'-';$uuid.=substr($chars,16,4)。'-';$uuid.=substr($chars,20,12);返回$prefix。$uuid;}获取签名验证的方法是个坑。我在阿里云上下了工单,要求演示。所有的demo都错了-.-还好后来想通了httpget中的Timestamp参数也是拼接出来的一个坑demo(一开始以为函数可以直接获取)。最后自己开发的时候在百度上做了很多研究,但是不想帮你。希望这些代码可以帮助到准备学习直播的你。..
