网站调用youku api接口获取视频缩略图,
之前一直使用这段代码来获取
$link = "http://v.youku.com/player/getPlayList/VideoIDS/{$str}/timezone/+08/version/5/source/out?password=&ran=2513&n=3"; $ch=@curl_init($link); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $cexecute=@curl_exec($ch); @curl_close($ch);
最近发现失效了,查找原因,发现youku已经更新API接口,而且更换为https方式。
尝试直接把api换成新接口,发现通过之前的代码用curl获取失败,但直接通过浏览器打开的方式却没有任何问题。
百思不得姐,最终在网上搜到答案。
原来接口url使用的是https协议,这个需要ssl认证的。使用curl请求的话,需要加入下面两行代码,
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
下面附上整个代码
<?php $ch=curl_init(); $url='https://openapi.youku.com/v2/videos/by_category.json?';//请求接口参数未写完整,不影响代码 curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); $res=curl_exec($ch); $res=json_decode($res,1); var_dump($res); ?>
上面代码表示不需要进行ca认证和证书中域名认证
如果需要验证证书,则可以使用以下代码
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); // 只信任CA颁布的证书 $cacert=getcwd().'/youku.crt'; //证书的位置 curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,1); //// 检查证书中是否设置域名