PHP調(diào)用API接口實(shí)現(xiàn)天氣查詢功能的示例
天氣預(yù)報(bào)查詢接口API,在這里我使用的是國(guó)家氣象局天氣預(yù)報(bào)接口
使用較多的還有:新浪天氣預(yù)報(bào)接口、百度天氣預(yù)報(bào)接口、google天氣接口、Yahoo天氣接口等等。
1、查詢方式
根據(jù)地名查詢各城市天氣情況
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
//查找淄博天氣情況
//接口自帶編寫的數(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ù)(包括簽名的處理)接口自帶編寫的數(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)天氣查詢功能的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ThinkPHP 連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)教程[全]
最近收集了一些關(guān)于THinkPHP連接Oracle數(shù)據(jù)庫(kù)的問(wèn)題,有很多朋友按照連接mysql的方法來(lái)操作,導(dǎo)致有一些方法在Oreale中無(wú)法正常使用2012-07-07
php解析url并得到url中的參數(shù)及獲取url參數(shù)的四種方式
本文給大家介紹php解析url并得到url中的參數(shù)及獲取url參數(shù)的四種方式,涉及到將字符串參數(shù)變?yōu)閿?shù)組,將參數(shù)變?yōu)樽址南嚓P(guān)知識(shí),本文代碼簡(jiǎn)單易懂,感興趣的朋友一起看看吧2015-10-10
使用PHP下載CSS文件中的所有圖片【幾行代碼即可實(shí)現(xiàn)】
本文主要對(duì)使用PHP下載CSS文件中的所有圖片的方法進(jìn)行介紹,只需幾行代碼即可實(shí)現(xiàn),且注釋詳細(xì)。下面就跟小編一起來(lái)看下吧2016-12-12
PHP實(shí)現(xiàn)數(shù)據(jù)分頁(yè)顯示的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇PHP實(shí)現(xiàn)數(shù)據(jù)分頁(yè)顯示的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給的大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
ThinkPHP關(guān)于session的操作方法匯總
這篇文章主要介紹了ThinkPHP關(guān)于session的操作方法,有助于讀者加深對(duì)ThinkPHP操作session的認(rèn)識(shí),需要的朋友可以參考下2014-07-07
Django中datetime的處理方法(strftime/strptime)
這篇文章主要介紹了Django中datetime的處理方式(strftime/strptime),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
Yii2搭建后臺(tái)并實(shí)現(xiàn)rbac權(quán)限控制完整實(shí)例教程
這篇文章主要介紹了Yii2搭建后臺(tái)并實(shí)現(xiàn)rbac權(quán)限控制完整實(shí)例教程的相關(guān)資料,需要的朋友可以參考下2016-04-04

