public function hoslist(){
/* $this->page=0;
$this->display();
exit;*/
$key = 'bf9311f0619a4fc58f25a0bb4987fa69';
$secret = '6040ecb369de4aa5b8ed53a860cacd5b';
$time=urlencode(str_replace('+','.',date(DATE_ISO8601))."Z");
$data=array('Format'=>'json','AWSAccessKeyId'=>$key,'Action'=>'DescribeInstanceTypes','SignatureVersion'=>2,'Timestamp'=>$time,'SignatureMethod'=>HmacSHA256);
$strdata=$this->getSignature($data);
$hashdata="POST\nmosapi.meituan.com\n/mcs/v1\n".$strdata;//组装签名参数
$sign= urlencode(base64_encode( hash_hmac('sha256', $hashdata, $secret)));//获取签名
$data['Signature']=$sign;
$posturl="https://mosapi.meituan.com/mcs/v1?".$strdata."&Signature=".$sign;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $posturl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded' ,'Accept:text/plain'));//x-www-form-urlencoded编码
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//抓取跳转页面
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否获取跳转页面内容
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_HEADER, true);//返回请求head头
curl_setopt($curl, CURLOPT_NOBODY, true);//返回请求结果内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$data = curl_exec($curl);
curl_close($curl);
print_r($data);
}
/**
* @efect:数组组装url字符串升序排序
*/
function getSignature($data){
ksort($data);//升序排序
$strdata='';
foreach ($data as $k => $v) {
$strdata .= "&$k=$v";
}
$strdata=substr($strdata,1);
return $strdata;
}
上面是php调用美团云生成签名的方式,我把key替换成自己的始终显示403,有没有大神知道怎么调用
总算解决了,写了一篇博客,网上几乎没有http://blog.csdn.net/u0107577...