SDK 代码下载
将示例代码中的
YOUR_SECRET_ID
和 YOUR_SECRET_KEY
替换成实际的 SecretId 和 SecretKey 。
示例代码仅供参考, 请根据实际情况使用。PHP 语言的示例代码
<?php/***************真实调用时,需要根据不同接口修改下面的参数*********************************//***************此处以DescribeInstances为例说明 如何获取指定 instanceId 的云服务器**********//*DescribeInstances 接口的 URL地址为 cvm.api.qcloud.com,可从对应的接口说明 “1.接口描述” 章节获取该接口的地址*/$HttpUrl="cvm.api.qcloud.com";/*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/$HttpMethod="GET";/*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/$isHttps =true;/*需要填写您的密钥,可从 https://console.cloud.tencent.com/capi 获取 SecretId 及 $secretKey*/$secretKey='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';/*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/$COMMON_PARAMS = array('Nonce'=> rand(),'Timestamp'=>time(NULL),'Action'=>'DescribeInstances','SecretId'=> 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX','Region' =>'gz',);/*下面这两个参数为 DescribeInstances 接口的私有参数,用于查询特定的云服务器列表*/$PRIVATE_PARAMS = array('instanceIds.0'=> 'qcvm00001','instanceIds.1'=> 'qcvm00002',);/***********************************************************************************/CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);function CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps){$FullHttpUrl = $HttpUrl."/v2/index.php";/***************对请求参数 按参数名 做字典序升序排列,注意此排序区分大小写*************/$ReqParaArray = array_merge($COMMON_PARAMS, $PRIVATE_PARAMS);ksort($ReqParaArray);/**********************************生成签名原文*********************************** 将 请求方法, URI地址,及排序好的请求参数 按照下面格式 拼接在一起, 生成签名原文,此请求中的原文为* GETcvm.api.qcloud.com/v2/index.php?Action=DescribeInstances&Nonce=345122&Region=gz* &SecretId=********bsJ5yKBZQ ·1pn74WFkmLPx3gnPhESA&Timestamp=1408704141* &instanceIds.0=qcvm12345&instanceIds.1=qcvm56789* ****************************************************************************/$SigTxt = $HttpMethod.$FullHttpUrl."?";$isFirst = true;foreach ($ReqParaArray as $key => $value){if (!$isFirst){$SigTxt = $SigTxt."&";}$isFirst= false;/*拼接签名原文时,如果参数名称中携带_,需要替换成.*/if(strpos($key, '_')){$key = str_replace('_', '.', $key);}$SigTxt=$SigTxt.$key."=".$value;}/*********************根据签名原文字符串 $SigTxt,生成签名 Signature******************/$Signature = base64_encode(hash_hmac('sha1', $SigTxt, $secretKey, true));/***************拼接请求串,对于请求参数及签名,需要进行urlencode编码********************/$Req = "Signature=".urlencode($Signature);foreach ($ReqParaArray as $key => $value){$Req=$Req."&".$key."=".urlencode($value);}/*********************************发送请求********************************/if($HttpMethod === 'GET'){if($isHttps === true){$Req="https://".$FullHttpUrl."?".$Req;}else{$Req="http://".$FullHttpUrl."?".$Req;}$Rsp = file_get_contents($Req);}else{if($isHttps === true){$Rsp= SendPost("https://".$FullHttpUrl,$Req,$isHttps);}else{$Rsp= SendPost("http://".$FullHttpUrl,$Req,$isHttps);}}var_export(json_decode($Rsp,true));}function SendPost($FullHttpUrl,$Req,$isHttps){$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $Req);curl_setopt($ch, CURLOPT_URL, $FullHttpUrl);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);if ($isHttps === true) {curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);}$result = curl_exec($ch);return $result;}