PHP調(diào)用API接口實(shí)現(xiàn)天氣查詢(xún)功能的示例
天氣預(yù)報(bào)查詢(xún)接口API,在這里我使用的是國(guó)家氣象局天氣預(yù)報(bào)接口
使用較多的還有:新浪天氣預(yù)報(bào)接口、百度天氣預(yù)報(bào)接口、google天氣接口、Yahoo天氣接口等等。
1、查詢(xún)方式
根據(jù)地名查詢(xún)各城市天氣情況
2.請(qǐng)求URL地址
http://route.showapi.com/9-2
3、接口參數(shù)說(shuō)明:
一、系統(tǒng)級(jí)參數(shù)(所有接入點(diǎn)都需要的參數(shù)):
二、應(yīng)用級(jí)參數(shù)(每個(gè)接入點(diǎn)有自己的參數(shù)):
4.返回參數(shù)
以JSON格式返回結(jié)果
1)系統(tǒng)級(jí)參數(shù)(所有接入點(diǎn)都會(huì)返回的參數(shù))
2)應(yīng)用級(jí)參數(shù)(系統(tǒng)級(jí)輸出參數(shù)showapi_res_body字段中的json數(shù)據(jù)結(jié)構(gòu))
具體調(diào)用操作:
PHP中自帶了處理json格式字符串的內(nèi)置函數(shù),下面做一個(gè)事例,并給出完整代碼:
<?php //查找淄博天氣情況 //接口自帶編寫(xiě)的數(shù)組 $showapi_appid = '46435'; //替換此值,在官網(wǎng)的"我的應(yīng)用"中找到相關(guān)值 $showapi_secret = '7c55aef4ede442ffa49b24c2c808e523'; //替換此值,在官網(wǎng)的"我的應(yīng)用"中找到相關(guān)值 $paramArr = array( 'showapi_appid'=> $showapi_appid, 'areaid'=> "", 'area'=> "淄博", 'needMoreDay'=> "", 'needIndex'=> "", 'needHourData'=> "", 'need3HourForcast'=> "", 'needAlarm'=> "" //添加其他參數(shù) ); //創(chuàng)建參數(shù)(包括簽名的處理)接口自帶編寫(xiě)的數(shù)組 function createParam ($paramArr,$showapi_secret) { $paraStr = ""; $signStr = ""; ksort($paramArr); foreach ($paramArr as $key => $val) { if ($key != '' && $val != '') { $signStr .= $key.$val; $paraStr .= $key.'='.urlencode($val).'&'; } } $signStr .= $showapi_secret;//排好序的參數(shù)加上secret,進(jìn)行md5 $sign = strtolower(md5($signStr)); $paraStr .= 'showapi_sign='.$sign;//將md5后的值作為參數(shù),便于服務(wù)器的效驗(yàn) return $paraStr; } $param = createParam($paramArr,$showapi_secret); $url = 'http://route.showapi.com/9-2?'.$param; //獲取json格式的數(shù)據(jù) $result = file_get_contents($url); //對(duì)json格式的字符串進(jìn)行編碼 $arr = (json_decode($result)); $v = $arr->showapi_res_body;$attr = $v->f1; //所需要的數(shù)據(jù)進(jìn)行調(diào)用 $arr1 = $attr->day_weather; $arr2 = $attr->night_weather; $arr3 = $attr->night_air_temperature; $arr4 = $attr->day_air_temperature; $arr5 = $attr->day_wind_direction; $arr6 = $attr->night_weather_pic; echo $arr6; ?> //將所需要的數(shù)據(jù)添加到數(shù)據(jù)庫(kù) <?php require_once "./DBDA.class.php"; $db = new DBDA(); $sql = "insert into weather values('','{$arr1}','{$arr2}')"; $arr = $db->query($sql); ?>
效果如圖:
以上這篇PHP調(diào)用API接口實(shí)現(xiàn)天氣查詢(xún)功能的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何用phpmyadmin設(shè)置mysql數(shù)據(jù)庫(kù)用戶(hù)的權(quán)限
發(fā)現(xiàn)有很多用戶(hù)對(duì)數(shù)據(jù)庫(kù)用戶(hù)權(quán)限的設(shè)置不太了解,下面為大家詳細(xì)講解一下如何用 phpMyAdmin 來(lái)設(shè)置數(shù)據(jù)庫(kù)用戶(hù)的權(quán)限2012-01-01php框架CodeIgniter主從數(shù)據(jù)庫(kù)配置方法分析
這篇文章主要介紹了php框架CodeIgniter主從數(shù)據(jù)庫(kù)配置方法,結(jié)合實(shí)例形式分析了CodeIgniter框架主從數(shù)據(jù)庫(kù)配置方法、模型model與控制器調(diào)用操作技巧以及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-05-05YII模塊實(shí)現(xiàn)綁定二級(jí)域名的方法
這篇文章主要介紹了YII模塊實(shí)現(xiàn)綁定二級(jí)域名的方法,需要的朋友可以參考下2014-07-07php fsockopen解決辦法 php實(shí)現(xiàn)多線程
有沒(méi)有辦法在php中實(shí)現(xiàn)多線程呢?假設(shè)你正在寫(xiě)一個(gè)基于多臺(tái)服務(wù)器的php應(yīng)用,理想的情況時(shí)同時(shí)向多臺(tái)服務(wù)器發(fā)送請(qǐng)求,而不是一臺(tái)接一臺(tái)??梢詫?shí)現(xiàn)嗎?回答是當(dāng)然可以,下面看解決方法2014-01-01老司機(jī)傳授Ubuntu下Apache+PHP+MySQL環(huán)境搭建攻略
這篇文章主要介紹了Ubuntu下Apache+PHP+MySQL環(huán)境搭建攻略,文中采用的是LoadModule加載模塊的方式將PHP與Apache服務(wù)器程序連接,需要的朋友可以參考下2016-03-03php調(diào)用百度人臉識(shí)別接口查詢(xún)數(shù)據(jù)庫(kù)人臉信息實(shí)現(xiàn)驗(yàn)證登錄功能
這篇文章主要介紹了php調(diào)用百度人臉識(shí)別接口查詢(xún)數(shù)據(jù)庫(kù)人臉信息實(shí)現(xiàn)驗(yàn)證登錄功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01