阿里雲有免費的手機歸屬地api接口,作為新手的博主決定使用該接口寫一個手機歸屬地查詢網站,學習api的使用。
主要思路:
獲取前台傳入的手機號->寫出請求url,請求頭,請求方式->初始化cURL變量->設置cURL變量參數->執行查詢,保存返回的json數據->關閉查詢連接->將json數據解析為php數組->將該php數組賦值到模板->前台調用該數組值。
public function index() { $num=input('m'); //獲取前台提交的手機號 $host='http://showphone.market.alicloudapi.com'; //查詢主機鏈接 $path="/6-1"; $querys="num=".$num; //查詢參數 $url=$host.$path.'?'.$querys; //完整請求鏈接 $appcode=''; //阿里雲提供的接口app碼 $headers = array(); array_push($headers, "Authorization:APPCODE " . $appcode);//請求頭 $method='GET'; //請求方式 $curl=curl_init(); //初始化一個curl句柄,用於獲取其它網站內容 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); //請求方式 curl_setopt($curl, CURLOPT_URL, $url); //請求url curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //請求頭 curl_setopt($curl, CURLOPT_FAILONERROR, false); //是否顯示HTTP狀態碼 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//執行成功返回結果 curl_setopt($curl, CURLOPT_HEADER, false); //是否返回請求頭信息 if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁止curl驗證對等證書 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);//不檢查證書 } $res=curl_exec($curl);//執行查詢句柄 curl_close($curl); //關閉查詢連接 $resu=json_decode($res,true);//將json數據解碼為php數組 if($resu['showapi_res_body']['ret_code']==-1){ //返回錯誤碼,查詢失敗 return $this->error('沒有查詢結果,請重新輸入','Index/index'); }else{ $this->assign('num',$num); //將查詢手機號寫入模板 $this->assign('res',$resu); //將查詢結果php數組寫入模板 return $this->fetch('index'); } }
1.cURL介紹
cURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 庫。本文將介紹 cURL 的一些高級特性,以及在PHP中如何運用它。
2.基本結構
在學習更為復雜的功能之前,先來看一下在PHP中建立cURL請求的基本步驟:
(1)初始化
curl_init()
(2)設置變量
curl_setopt()
最為重要,一切玄妙均在此。有一長串cURL參數可供設置,它們能指定URL請求的各個細節。要一次性全部看完並理解可能比較困難,所以今天我們只試一下那些更常用也更有用的選項。
(3)執行並獲取結果
curl_exec()
(4)釋放cURL句柄
curl_close()
3.cURL實現Get和Post
3.1 Get方式實現
//初始化 $ch = curl_init(); //設置選項,包括URL curl_setopt($ch, CURLOPT_URL, "http://www.jb51.net"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); //執行並獲取HTML文檔內容 $res = curl_exec($ch); //釋放curl句柄 curl_close($ch); //打印獲得的數據
var_dump($res);
3.2 Post方式實現
$url = "http://localhost/web_services.php"; $post_data = array ("username" => "bob","key" => "12345"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // post數據 curl_setopt($ch, CURLOPT_POST, 1); // post的變量 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $res = curl_exec($ch); curl_close($ch); //打印獲得的數據 var_dump($res);
4.使用php json_decode()函數解析json為數組。
附上demo地址:https://github.com/ValueStar/PhoneNumberAttribution