youku API 接口问题处理(http转为https)

网站调用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); //// 检查证书中是否设置域名
Posted in 未分类

发表评论

邮箱地址不会被公开。 必填项已用*标注