php阿里云短信接口POST和GET方式訪問成功demo

<?php  
session_start();  
header("Content-type:text/html; charset=UTF-8");  
  
function https_request($url)  
    {  
    $curl = curl_init();  
    curl_setopt($curl, CURLOPT_URL, $url);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    $data = curl_exec($curl);  
    if (curl_errno($curl)) {return 'ERROR '.curl_error($curl);}  
    curl_close($curl);  
    return $data;  
    }  
function xml_to_array($xml){  
    $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";  
    if(preg_match_all($reg, $xml, $matches)){  
        $count = count($matches[0]);  
        for($i = 0; $i < $count; $i++){  
        $subxml= $matches[2][$i];  
        $key = $matches[1][$i];  
            if(preg_match( $reg, $subxml )){  
                $arr[$key] = xml_to_array( $subxml );  
            }else{  
                $arr[$key] = $subxml;  
            }  
        }  
    }  
    return @$arr;  
}  

if(empty($mobile)){  
    //exit('手機號碼不能為空');  
}  
  
if(empty($_SESSION['send_code']) or $send_code!=$_SESSION['send_code']){  
    //防用戶惡意請求  
    //exit('請求超時,請刷新頁面后重試');  
}  
  
function percentEncode($str)  
{  
    // 使用urlencode編碼后旁舰,將"+","*","%7E"做替換即滿足ECS API規(guī)定的編碼規(guī)范  
    $res = urlencode($str);  
    $res = preg_replace('/\+/', '%20', $res);  
    $res = preg_replace('/\*/', '%2A', $res);  
    $res = preg_replace('/%7E/', '~', $res);  
    return $res;  
}  

function computeSignature($parameters, $accessKeySecret)  
{  
    // 將參數(shù)Key按字典順序排序  
    ksort($parameters);  
    // 生成規(guī)范化請求字符串  
    $canonicalizedQueryString = '';  
    foreach($parameters as $key => $value)  
    {  
    $canonicalizedQueryString .= '&' . percentEncode($key)  
        . '=' . percentEncode($value);  
    }  
    // 生成用于計算簽名的字符串 stringToSign  
    $stringToSign = 'GET&%2F&' . percentencode(substr($canonicalizedQueryString, 1));  
    //echo "<br>".$stringToSign."<br>";  
    // 計算簽名而线,注意accessKeySecret后面要加上字符'&'  
    $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));  
    return $signature;  
}  
// 注意使用GMT時間  
date_default_timezone_set("GMT");  
$target = "https://dysmsapi.aliyuncs.com/?";  
$dateTimeFormat = 'Y-m-d\TH:i:s\Z'; // ISO8601規(guī)范  
$accessKeyId = 'XXXXXXXX';      // 這里填寫您的Access Key ID  
$accessKeySecret = 'XXXXXXXXXXXXXXXXX';  // 這里填寫您的Access Key Secret  
$ParamString="{\"XXName\":\"test\",\"XXXXType\":\"test\"}";  

$data = array(  
    'AccessKeyId' => $accessKeyId,
    'Action' => 'SendSms',
    'Format' => 'XML', 
    'OutId' => '123', 
    'PhoneNumbers' => '183XXXXXXXX',
    'RegionId' => 'cn-hangzhou',
    'SignName'=>'XXXX電子商務(wù)有限公司',
    'SignatureMethod' => 'HMAC-SHA1',
    'SignatureNonce'=> uniqid(),
    'SignatureVersion' => '1.0',
    'TemplateCode' => 'SMS_9705XXXX', 
    'TemplateParam' => $ParamString,
    'Timestamp' => date($dateTimeFormat),
    'Version' => '2017-05-25'
);  
// 計算簽名并把簽名結(jié)果加入請求參數(shù)  
$data['Signature'] = computeSignature($data, $accessKeySecret);  
// 發(fā)送請求     
    $result = xml_to_array(https_request($target.http_build_query($data)));  
    echo $result['Error']['Code']."--->".$result['Error']['Message']; 
    echo "<br><br>".$target . http_build_query($data);  
?>

用post方式訪問只需要改三處:
1铭污、將computeSignature函數(shù)內(nèi)的拼接字符GET改成POST

 // 生成用于計算簽名的字符串 stringToSign  
$stringToSign = 'POST&%2F&' . percentencode(substr($canonicalizedQueryString, 1));  

2、將發(fā)送http請求的PHP函數(shù)https_request改為用POST方式傳:

   function https_request($url)  
{  
    $curl = curl_init();
    //設(shè)置抓取的url
    curl_setopt($curl, CURLOPT_URL, 'https://dysmsapi.aliyuncs.com');
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    //設(shè)置頭文件的信息作為數(shù)據(jù)流輸出
    curl_setopt($curl, CURLOPT_HEADER, 1);
    //設(shè)置獲取的信息以文件流的形式返回膀篮,而不是直接輸出嘹狞。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //設(shè)置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $url);
    $data = curl_exec($curl);  
    if (curl_errno($curl)) {return 'ERROR '.curl_error($curl);}  
    curl_close($curl);  
    return $data;  
}  

3、調(diào)用https_request的參數(shù)需要調(diào)整為POST要傳輸?shù)闹?/p>

$result = xml_to_array(https_request(http_build_query($data)));  

DONE誓竿!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磅网,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筷屡,更是在濱河造成了極大的恐慌涧偷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毙死,死亡現(xiàn)場離奇詭異嫂丙,居然都是意外死亡规哲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門诽表,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唉锌,“玉大人,你說我怎么就攤上這事竿奏“兰颍” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵泛啸,是天一觀的道長绿语。 經(jīng)常有香客問我,道長候址,這世上最難降的妖魔是什么吕粹? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮岗仑,結(jié)果婚禮上匹耕,老公的妹妹穿的比我還像新娘。我一直安慰自己荠雕,他們只是感情好稳其,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布驶赏。 她就那樣靜靜地躺著,像睡著了一般既鞠。 火紅的嫁衣襯著肌膚如雪煤傍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天嘱蛋,我揣著相機與錄音蚯姆,去河邊找鬼。 笑死浑槽,一個胖子當著我的面吹牛蒋失,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桐玻,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼篙挽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镊靴?” 一聲冷哼從身側(cè)響起铣卡,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎偏竟,沒想到半個月后煮落,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡踊谋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年蝉仇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殖蚕。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡轿衔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出睦疫,到底是詐尸還是另有隱情害驹,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布蛤育,位于F島的核電站宛官,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瓦糕。R本人自食惡果不足惜底洗,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咕娄。 院中可真熱鬧枷恕,春花似錦、人聲如沸谭胚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胡控,卻和暖如春扳剿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昼激。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工庇绽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橙困。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓瞧掺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凡傅。 傳聞我的和親對象是個殘疾皇子辟狈,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 詳細參考網(wǎng)址:https://help.aliyun.com/document_detail/56189.html...
    CJDUDU閱讀 3,660評論 0 1
  • 首先下載SDK與DOME文檔 http://download.csdn.net/download/weixin_4...
    熊大y閱讀 575評論 0 0
  • 很多時候,女人在事業(yè)上夏跷,在工作上都是以女漢子形象出現(xiàn)的哼转,只有這樣,才能更好的保護他們槽华,因為這是一個對女人不平...
    張栩溪閱讀 276評論 0 1
  • 一個工作日壹蔓,為了上班趕早叫了“滴滴”車,過一會兒司機來了猫态。是一位中年老大姐佣蓉,我們在車上有一搭沒一搭的閑聊。照例說說...
    小幼班安安閱讀 256評論 1 0
  • 在長江邊上亲雪,在一座層巒疊嶂的山峰下勇凭,有一塊石頭,跟別的石頭不一樣匆光,它不僅體形高大,而且極像一個女人在盼望著她的丈夫...
    Mr_稻香老農(nóng)閱讀 911評論 6 8