24
2017
09

阿里云取出所有直播间的接口

上午一直在调试安卓同事的一个直播间接口

测试了好几种方法,最后快实现的时候,循环调用出现了问题

最后在 csdn上找到了解决方法

直接上代码吧,挺坑的,阿里的接口,也没注释,都不知道怎么做。

001    <?php    
002        header("Content-type: text/html; charset=utf-8");    
003        //phpinfo();    
004        function curl_http_request($url,$data = null)    
005        {    
006            $ch = curl_init();    
007            curl_setopt($ch, CURLOPT_URL, $url);    
008            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    
009            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);    
010            //如果$data不为空,则为POST请求    
011            if (!empty($data)){    
012                curl_setopt($ch, CURLOPT_POST, 1);    
013                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
014            }    
015            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
016            $output = curl_exec($ch);    
017            $error = curl_error($ch);    
018            curl_close($ch);    
019            if ($error){    
020                throw new Exception('请求发生错误:' . $error);    
021            }    
022            //$resultArr = json_decode($output, true);//将json转为数组格式数据    
023            return $output;    
024    
025        }    
026    
027        function percent_encode($res){    
028            $res=trim(utf8_encode(urlencode($res)));    
029            //$res=utf8_encode($res);    
030            $res=str_replace(array('+','*','%7E'), array('%20','%2A','~'), $res);    
031            return $res;    
032        }    
033    
034        function uuid($prefix = '')    
035        {    
036            $chars = md5(uniqid(mt_rand(), true));    
037            $uuid  = substr($chars,0,8) . '-';    
038            $uuid .= substr($chars,8,4) . '-';    
039            $uuid .= substr($chars,12,4) . '-';    
040            $uuid .= substr($chars,16,4) . '-';    
041            $uuid .= substr($chars,20,12);    
042            return $prefix . $uuid;    
043        }    
044    
045        function compute_signature($parameters, $access_key_secret){    
046            ksort($parameters);    
047            $canonicalizedQueryString = '';    
048            foreach ($parameters as $k => $v) {    
049                if(empty($canonicalizedQueryString))    
050                    $canonicalizedQueryString .= percent_encode($k) . '=' . percent_encode($v);    
051                else    
052                    $canonicalizedQueryString .= '&' . percent_encode($k) . '=' . percent_encode($v);    
053            }    
054            //var_dump($canonicalizedQueryString);    
055            $stringToSign = 'GET&%2F&' . percent_encode($canonicalizedQueryString);    
056            //var_dump($stringToSign);    
057            $signature=base64_encode(hash_hmac("sha1",$stringToSign,$access_key_secret."&",true));    
058            return $signature;    
059        }    
060    
061        function compose_url($Action,$StreamName='',$AppName=''){    
062            //$timestamp=strftime("%Y-%m-%dT%H:%M:%SZ",time());    
063            $timestamp=gmdate("Y-m-d\TH:i:s\Z");    
064            $access_key_id='xxxxxxx';    
065            $access_key_secret='xxxxxxxxxxxxxxxxx';    
066            $parameters = array(    
067                    'Format'        => 'JSON',    
068                    'Version'       => '2014-11-11',    
069                    'AccessKeyId'   => $access_key_id,    
070                    'SignatureVersion'  => '1.0',    
071                    'SignatureMethod'   => 'HMAC-SHA1',    
072                    'SignatureNonce'    => uuid(),    
073                    'TimeStamp'         => $timestamp,    
074                    'Action'            =>$Action,//DescribeCdnService    
075                    'DomainName'        =>'xxx.xxxxx.com',    
076                    'AppName'        =>$AppName,    
077                    'StreamName'        =>$StreamName,    
078                    'StartTime'         => '',    
079                    'EndTime'         =>'',    
080    
081            );    
082            $signature = compute_signature($parameters, $access_key_secret);    
083            $canonicalizedQueryString='Signature='.urlencode($signature);    
084            foreach ($parameters as $k => $v) {    
085                $canonicalizedQueryString .= '&' . $k . '=' . percent_encode($v);    
086            }    
087            //var_dump("http://cdn.aliyuncs.com/?".$canonicalizedQueryString);    
088    
089    
090            $url = "http://cdn.aliyuncs.com/?".$canonicalizedQueryString;    
091            return $url;    
092    
093            }    
094    
095    
096    
097    
098        //判断get参数是否存在    
099        if(is_array($_GET)&&count($_GET)>0)    
100        {    
101    
102            $url_list=compose_url("DescribeLiveStreamsOnlineList");    
103    
104            //第一个请求,获取参数    
105            //直播列表    
106            $result_lineList=array();    
107            //拼接url    
108    
109            $array_string = curl_http_request($url_list);    
110            $result =json_decode($array_string);    
111            $object = json_decode(json_encode( $result),true);    
112            $res_array = $object["OnlineInfo"]["LiveStreamOnlineInfo"];    
113            if(empty($res_array)){    
114                $content = Array();    
115                $content["flag"]=0;    
116                $resturn_str = json_encode($content);    
117                echo $resturn_str;    
118            }else{    
119                $content = Array();    
120                $content["flag"]=1;    
121                $content["room"]=$res_array;    
122                //$resturn_str = json_encode($content);    
123                //echo $resturn_str;    
124                //循环遍历每个直播间    
125    
126                for ($i= 0;$i< count($res_array); $i++){    
127    
128                    $SteamName = $res_array[$i]["StreamName"];    
129                    //echo $SteamName;    
130                    $url_num=compose_url('DescribeLiveStreamOnlineUserNum',$SteamName,'xxxx');    
131    
132                    $array_string_num = curl_http_request($url_num);    
133                    $result_num = json_decode($array_string_num);    
134                    $object_num = json_decode(json_encode( $result_num),true);    
135    
136                    //获取当前直播间的人数    
137                    //$resturn_str = json_encode($object_num);    
138                    //echo $resturn_str;    
139                    //echo "    
140    ";    
141    
142                    $UserNumber = $object_num["OnlineUserInfo"]["LiveStreamOnlineUserNumInfo"][0]["UserNumber"];    
143                    $content["room"][$i]["UserNumber"]=$UserNumber;    
144    
145                    //$resturn_str = json_encode($content);    
146                    //echo $resturn_str;    
147    
148                    //echo $content;    
149    
150                }    
151    
152                //得到最终数据    
153                $resturn_str = json_encode($content);    
154                echo $resturn_str;    
155    
156    
157            }    
158    
159        }else{    
160    
161            $url1=compose_url("DescribeLiveStreamsOnlineList");    
162    
163            $url= compose_url('DescribeLiveStreamOnlineUserNum','StreamName1','xxxx');    
164            echo $url;    
165    
166        }    
167    
168    
169    ?>

文章参考: http://blog.csdn.net/yfgcq/article/details/52169901


他把所有的功能都实现了, 直接使用就可以了!


« 上一篇 下一篇 »

评论列表:

1.文娱帝国  2019-04-27 16:05:29 回复该评论
额。。。看不懂 ,支持一下
2.VPS234  2018-05-04 12:05:30 回复该评论
不错啊,研究一下
3.xio  2017-12-25 23:29:18 回复该评论
昨日贫道夜观天象,发现北斗七星有一颗星往南偏离了两厘米,便知施主气数已尽,今日见施主印堂发黑,眼睛发紫,胡言乱语,语无伦次,看来施主命不久矣啊!施主要想化险为夷唯有越过喜马拉雅山,登上珠穆朗玛峰向原始天尊求得一包“板蓝根”服下方能活命
4.xio  2017-12-25 23:29:09 回复该评论
我永远鄙视那些用手指破处的“男生”
5.xio  2017-12-25 23:29:03 回复该评论
别再提戒烟,戒酒了,老是自我骗自我玩
6.xio  2017-12-25 23:25:10 回复该评论
学习了。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。