全國天氣預(yù)報數(shù)據(jù)接口調(diào)用PHP示例
Oct 22, 2016 am 12:00 AM基于PHP的聚合數(shù)據(jù)全國天氣預(yù)報API服務(wù)請求的代碼樣例
本代碼示例是基于PHP的聚合數(shù)據(jù)全國天氣預(yù)報API服務(wù)請求的代碼樣例,使用前你需要:
①:通過https://www.juhe.cn/docs/api/id/39 申請一個天氣預(yù)報API的appkey
樣例代碼包含了獲取支持城市列表、根據(jù)城市獲取天氣預(yù)報、根據(jù)IP地址請求天氣預(yù)報、根據(jù)GPS坐標請求天氣、城市3小時天氣預(yù)報的實現(xiàn)。示例代碼主要是解析一些常用字段,如需要完整或其他未包含的字段,可以自行參考官方的接口,進行修改。
首先:引入封裝好的天氣調(diào)用類 header('Content-type:text/html;charset=utf-8');??<br>
include?'class.juhe.weather.php';?//引入天氣請求類??<br>
??<br>
//接口基本信息配置??<br>
$appkey?=?'**********';?//您申請的天氣查詢appkey??<br>
$weather?=?new?weather($appkey);??
一、獲取支持的城市列表
由于支持的城市列表基本不會這么變化,大家可以獲取到列表后內(nèi)置到自己的應(yīng)用中,就不用每次都去請求API。 $citysResult?=?$weather->getCitys();??<br>
if($citysResult['error_code']?==?0){????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????$citys?=?$citysResult['result'];??<br>
????foreach($citys?as?$ckey?=>$c){??<br>
????????echo?"ID:".$c['id'].",省份:".$c['province'].",城市:".$c['city'].",區(qū)域:".$c['district']."<br>";??<br>
????}??<br>
}else{????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????echo?$citysResult['error_code'].":".$citysResult['reason'];??<br>
}??
二、根據(jù)城市/ID獲取天氣預(yù)報
通過城市的名稱或城市的ID來獲取天氣預(yù)報,城市id就是獲取城市支持列表中返回的字段ID $cityWeatherResult?=?$weather->getWeather('蘇州');??<br>
if($cityWeatherResult['error_code']?==?0){????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????$data?=?$cityWeatherResult['result'];??<br>
????echo?"=======當前天氣實況=======<br>";??<br>
????echo?"溫度:".$data['sk']['temp']."????";??<br>
????echo?"風向:".$data['sk']['wind_direction']."????(".$data['sk']['wind_strength'].")";??<br>
????echo?"濕度:".$data['sk']['humidity']."????";??<br>
????echo?"<br><br>";??<br>
??<br>
????echo?"=======未來幾天天氣預(yù)報=======<br>";??<br>
????foreach($data['future']?as?$wkey?=>$f){??<br>
????????echo?"日期:".$f['date']."?".$f['week']."?".$f['weather']."?".$f['temperature']."<br>";??<br>
????}??<br>
????echo?"<br><br>";??<br>
??<br>
????echo?"=======相關(guān)天氣指數(shù)=======<br>";??<br>
????echo?"穿衣指數(shù):".$data['today']['dressing_index']."?,?".$data['today']['dressing_advice']."<br>";??<br>
????echo?"紫外線強度:".$data['today']['uv_index']."<br>";??<br>
????echo?"舒適指數(shù):".$data['today']['comfort_index']."<br>";??<br>
????echo?"洗車指數(shù):".$data['today']['wash_index'];??<br>
????echo?"<br><br>";??<br>
??<br>
}else{??<br>
????echo?$cityWeatherRe
三、根據(jù)用戶的IP地址請求對應(yīng)的天氣預(yù)報
通過用戶的IP地址獲取用戶所在地的天氣預(yù)報,由于IP地址解析可能會有誤差,所以有時定位到的城市不一定是用戶實際的所在地。 $ipWeatherResult?=?$weather->getWeatherByIP('58.215.154.128');??<br>
if($ipWeatherResult['error_code']?==?0){????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????$data?=?$ipWeatherResult['result'];??<br>
????echo?"=======當前城市=======<br>";??<br>
????echo?$data['today']['city'];??<br>
????echo?"<br><br>";??<br>
????echo?"=======當前天氣實況=======<br>";??<br>
????echo?"溫度:".$data['sk']['temp']."????";??<br>
????echo?"風向:".$data['sk']['wind_direction']."????(".$data['sk']['wind_strength'].")";??<br>
????echo?"濕度:".$data['sk']['humidity']."????";??<br>
????echo?"<br><br>";??<br>
??<br>
????echo?"=======未來幾天天氣預(yù)報=======<br>";??<br>
????foreach($data['future']?as?$wkey?=>$f){??<br>
????????echo?"日期:".$f['date']."?".$f['week']."?".$f['weather']."?".$f['temperature']."<br>";??<br>
????}??<br>
????echo?"<br><br>";??<br>
??<br>
????echo?"=======相關(guān)天氣指數(shù)=======<br>";??<br>
????echo?"穿衣指數(shù):".$data['today']['dressing_index']."?,?".$data['today']['dressing_advice']."<br>";??<br>
????echo?"紫外線強度:".$data['today']['uv_index']."<br>";??<br>
????echo?"舒適指數(shù):".$data['today']['comfort_index']."<br>";??<br>
????echo?"洗車指數(shù):".$data['today']['wash_index'];??<br>
????echo?"<br><br>";??<br>
??<br>
}else{??<br>
????echo?$ipWeatherResult['error_code'].":".$ipWeatherResult['reason'];??<br>
}?
四、根據(jù)GPS坐標來獲取對應(yīng)地區(qū)的天氣
無論通過二、三、四獲取的天氣預(yù)報,因為聚合格式都是統(tǒng)一的,所以解析的流程是一致的,所以沒有額外的操作,只是傳參上有點的差異。 $geoWeatherResult?=?$weather->getWeatherByGeo(116.401394,39.916042);??<br>
if($geoWeatherResult['error_code']?==?0){????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????$data?=?$geoWeatherResult['result'];??<br>
????echo?"=======當前城市=======<br>";??<br>
????echo?$data['today']['city'];??<br>
????echo?"<br><br>";??<br>
????echo?"=======當前天氣實況=======<br>";??<br>
????echo?"溫度:".$data['sk']['temp']."????";??<br>
????echo?"風向:".$data['sk']['wind_direction']."????(".$data['sk']['wind_strength'].")";??<br>
????echo?"濕度:".$data['sk']['humidity']."????";??<br>
????echo?"<br><br>";??<br>
??<br>
????echo?"=======未來幾天天氣預(yù)報=======<br>";??<br>
????foreach($data['future']?as?$wkey?=>$f){??<br>
????????echo?"日期:".$f['date']."?".$f['week']."?".$f['weather']."?".$f['temperature']."<br>";??<br>
????}??<br>
????echo?"<br><br>";??<br>
??<br>
????echo?"=======相關(guān)天氣指數(shù)=======<br>";??<br>
????echo?"穿衣指數(shù):".$data['today']['dressing_index']."?,?".$data['today']['dressing_advice']."<br>";??<br>
????echo?"紫外線強度:".$data['today']['uv_index']."<br>";??<br>
????echo?"舒適指數(shù):".$data['today']['comfort_index']."<br>";??<br>
????echo?"洗車指數(shù):".$data['today']['wash_index'];??<br>
????echo?"<br><br>";??<br>
??<br>
}else{??<br>
????echo?$geoWeatherResult['error_code'].":".$geoWeatherResult['reason'];??<br>
}??
五、獲取城市三小時預(yù)報
就是城市每3小時的天氣情況 $forecastResult?=?$weather->getForecast("蘇州");??<br>
if($forecastResult['error_code']?==?0){????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????$data?=?$forecastResult['result'];??<br>
????foreach($data?as?$key?=>?$d){??<br>
????????echo?"日期:".$d['date']."?(".$d['sh']."點-".$d['eh']."點)??".$d['weather']."?".$d['temp1']."~".$d["temp2"]."<br>";??<br>
????}??<br>
}else{????//以下可根據(jù)實際業(yè)務(wù)需求,自行改寫??<br>
????//////////////////////////////////////////////////////////////////////??<br>
????echo?$forecastResult['error_code'].":".$forecastResult['reason'];??<br>
}??
通過上面的示例代碼,大家應(yīng)該對如果調(diào)用聚合數(shù)據(jù)天氣預(yù)報API有了一個大體的了解。
最后放上class.juhe.weather.php完整代碼: <!--?php <br />
// +---------------------------------------------------------------------- <br />
// | JuhePHP [ NO ZUO NO DIE ] <br />
// +---------------------------------------------------------------------- <br />
// | Copyright (c) 2010-2015 http://juhe.cn All rights reserved. <br />
// +---------------------------------------------------------------------- <br />
// | Author: Juhedata <info@juhe.cn-->??<br>
//?+----------------------------------------------------------------------??<br>
??<br>
//----------------------------------??<br>
//?聚合數(shù)據(jù)天氣預(yù)報接口請求類??<br>
//----------------------------------??<br>
class?weather{??<br>
????private?$appkey?=?false;?//申請的聚合天氣預(yù)報APPKEY??<br>
??<br>
????private?$cityUrl?=?'http://v.juhe.cn/weather/citys';?//城市列表API?URL??<br>
??<br>
????private?$weatherUrl?=?'http://v.juhe.cn/weather/index';?//根據(jù)城市請求天氣API?URL??<br>
??<br>
????private?$weatherIPUrl?=?'http://v.juhe.cn/weather/ip';?//根據(jù)IP地址請求天氣API?URL??<br>
??<br>
????private?$weatherGeoUrl?=?'http://v.juhe.cn/weather/geo';?//根據(jù)GPS坐標獲取天氣API?URL??<br>
??<br>
????private?$forecast3hUrl?=?'http://v.juhe.cn/weather/forecast3h';?//獲取城市天氣3小時預(yù)報API?URL??<br>
??<br>
????public?function?__construct($appkey){??<br>
????????$this->appkey?=?$appkey;??<br>
????}??<br>
??<br>
????/**?<br>
?????*?獲取天氣預(yù)報支持城市列表?<br>
?????*?@return?array?<br>
?????*/??<br>
????public?function?getCitys(){??<br>
????????$params?=?'key='.$this->appkey;??<br>
????????$content?=?$this->juhecurl($this->cityUrl,$params);??<br>
????????return?$this->_returnArray($content);??<br>
????}??<br>
??<br>
????/**?<br>
?????*?根據(jù)城市名稱/ID獲取詳細天氣預(yù)報?<br>
?????*?@param?string?$city?[城市名稱/ID]?<br>
?????*?@return?array?<br>
?????*/??<br>
????public?function?getWeather($city){??<br>
????????$paramsArray?=?array(??<br>
????????????'key'???=>?$this->appkey,??<br>
????????????'cityname'??=>?$city,??<br>
????????????'format'????=>?2??<br>
????????);??<br>
????????$params?=?http_build_query($paramsArray);??<br>
????????$content?=?$this->juhecurl($this->weatherUrl,$params);??<br>
????????return?$this->_returnArray($content);??<br>
????}??<br>
??<br>
????/**?<br>
?????*?根據(jù)IP地址獲取當?shù)靥鞖忸A(yù)報?<br>
?????*?@param?string?$ip?[IP地址]?<br>
?????*?@return?array?<br>
?????*/??<br>
????public?function?getWeatherByIP($ip){??<br>
?????????$paramsArray?=?array(??<br>
????????????'key'???=>?$this->appkey,??<br>
????????????'ip'??=>?$ip,??<br>
????????????'format'????=>?2??<br>
????????);??<br>
????????$params?=?http_build_query($paramsArray);??<br>
????????$content?=?$this->juhecurl($this->weatherIPUrl,$params);??<br>
????????return?$this->_returnArray($content);??<br>
????}??<br>
??<br>
????/**?<br>
?????*?根據(jù)GPS坐標獲取當?shù)氐奶鞖忸A(yù)報?<br>
?????*?@param??string?$lon?[經(jīng)度]?<br>
?????*?@param??string?$lat?[緯度]?<br>
?????*?@return?array?<br>
?????*/??<br>
????public?function?getWeatherByGeo($lon,$lat){??<br>
????????$paramsArray?=?array(??<br>
????????????'key'???=>?$this->appkey,??<br>
????????????'lon'??=>?$lon,??<br>
????????????'lat'???=>?$lat,??<br>
????????????'format'????=>?2??<br>
????????);??<br>
????????$params?=?http_build_query($paramsArray);??<br>
????????$content?=?$this->juhecurl($this->weatherGeoUrl,$params);??<br>
????????return?$this->_returnArray($content);??<br>
????}??<br>
??<br>
????/**?<br>
?????*?獲取城市三小時預(yù)報?<br>
?????*?@param??string?$city?[城市名稱]?<br>
?????*?@return?array?<br>
?????*/??<br>
????public?function?getForecast($city){??<br>
????????$paramsArray?=?array(??<br>
????????????'key'???=>?$this->appkey,??<br>
????????????'cityname'??=>?$city,??<br>
????????????'format'????=>?2??<br>
????????);??<br>
????????$params?=?http_build_query($paramsArray);??<br>
????????$content?=?$this->juhecurl($this->forecast3hUrl,$params);??<br>
????????return?$this->_returnArray($content);??<br>
????}??<br>
??<br>
????/**?<br>
?????*?將JSON內(nèi)容轉(zhuǎn)為數(shù)據(jù),并返回?<br>
?????*?@param?string?$content?[內(nèi)容]?<br>
?????*?@return?array?<br>
?????*/??<br>
????public?function?_returnArray($content){??<br>
????????return?json_decode($content,true);??<br>
????}??<br>
??<br>
????/**?<br>
?????*?請求接口返回內(nèi)容?<br>
?????*?@param??string?$url?[請求的URL地址]?<br>
?????*?@param??string?$params?[請求的參數(shù)]?<br>
?????*?@param??int?$ipost?[是否采用POST形式]?<br>
?????*?@return??string?<br>
?????*/??<br>
????public?function?juhecurl($url,$params=false,$ispost=0){??<br>
????????$httpInfo?=?array();??<br>
????????$ch?=?curl_init();??<br>
??<br>
????????curl_setopt(?$ch,?CURLOPT_HTTP_VERSION?,?CURL_HTTP_VERSION_1_1?);??<br>
????????curl_setopt(?$ch,?CURLOPT_USERAGENT?,?'Mozilla/5.0?(Windows?NT?10.0;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/41.0.2272.118?Safari/537.36'?);??<br>
????????curl_setopt(?$ch,?CURLOPT_CONNECTTIMEOUT?,?30?);??<br>
????????curl_setopt(?$ch,?CURLOPT_TIMEOUT?,?30);??<br>
????????curl_setopt(?$ch,?CURLOPT_RETURNTRANSFER?,?true?);??<br>
????????if(?$ispost?)??<br>
????????{??<br>
????????????curl_setopt(?$ch?,?CURLOPT_POST?,?true?);??<br>
????????????curl_setopt(?$ch?,?CURLOPT_POSTFIELDS?,?$params?);??<br>
????????????curl_setopt(?$ch?,?CURLOPT_URL?,?$url?);??<br>
????????}??<br>
????????else??<br>
????????{??<br>
????????????if($params){??<br>
????????????????curl_setopt(?$ch?,?CURLOPT_URL?,?$url.'?'.$params?);??<br>
????????????}else{??<br>
????????????????curl_setopt(?$ch?,?CURLOPT_URL?,?$url);??<br>
????????????}??<br>
????????}??<br>
????????$response?=?curl_exec(?$ch?);??<br>
????????if?($response?===?FALSE)?{??<br>
????????????//echo?"cURL?Error:?"?.?curl_error($ch);??<br>
????????????return?false;??<br>
????????}??<br>
????????$httpCode?=?curl_getinfo(?$ch?,?CURLINFO_HTTP_CODE?);??<br>
????????$httpInfo?=?array_merge(?$httpInfo?,?curl_getinfo(?$ch?)?);??<br>
????????curl_close(?$ch?);??<br>
????????return?$response;??<br>
????}??<br>
??<br>
}??

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

《Go語言編程實例:Web開發(fā)中的代碼示例》隨著互聯(lián)網(wǎng)的快速發(fā)展,Web開發(fā)已經(jīng)成為各行業(yè)中必不可少的一部分。作為一門功能強大且性能優(yōu)越的編程語言,Go語言在Web開發(fā)中越來越受到開發(fā)者們的青睞。本文將通過具體的代碼示例,介紹如何利用Go語言進行Web開發(fā),讓讀者能夠更好地理解和運用Go語言來構(gòu)建自己的Web應(yīng)用。1.簡單的HTTP服務(wù)器首先,讓我們從一個

華為云邊緣計算對接指南:Java代碼示例快速實現(xiàn)接口隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展和邊緣計算的興起,越來越多的企業(yè)開始關(guān)注邊緣計算的應(yīng)用。華為云提供了邊緣計算服務(wù),為企業(yè)提供了高可靠的計算資源和便捷的開發(fā)環(huán)境,使得邊緣計算應(yīng)用更加容易實現(xiàn)。本文將介紹如何通過Java代碼快速實現(xiàn)華為云邊緣計算的接口。首先,我們需要準備好開發(fā)環(huán)境。確保你已經(jīng)安裝了Java開發(fā)工具包(

了解Python編程的入門級代碼示例Python是一種簡單易學(xué),功能強大的編程語言。對于初學(xué)者來說,了解Python編程的入門級代碼示例是非常重要的。本文將為您提供一些具體的代碼示例,幫助您快速入門。打印HelloWorldprint("HelloWorld")這是Python中最簡單的代碼示例。print()函數(shù)用于將指定的內(nèi)容輸出

Java冒泡排序最簡單的代碼示例冒泡排序是一種常見的排序算法,它的基本思想是通過相鄰元素的比較和交換來將待排序序列逐步調(diào)整為有序序列。下面是一個簡單的Java代碼示例,演示了如何實現(xiàn)冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

如何使用PHP編寫庫存管理系統(tǒng)中的庫存分倉管理功能代碼庫存管理是許多企業(yè)中不可或缺的一部分。對于擁有多個倉庫的企業(yè)來說,庫存分倉管理功能尤為重要。通過合理管理和跟蹤庫存,企業(yè)可以實現(xiàn)不同倉庫之間的庫存調(diào)撥,優(yōu)化運營成本,改善協(xié)同效率。本文將介紹如何使用PHP編寫庫存分倉管理功能的代碼,并為您提供相關(guān)的代碼示例。一、建立數(shù)據(jù)庫在開始編寫庫存分倉管理功能的代碼之

PHP變量存儲程序運行期間的值,對于構(gòu)建動態(tài)且交互式的WEB應(yīng)用程序至關(guān)重要。本文將深入探討php變量,并通過10個真實的示例展示它們的實際應(yīng)用。1.存儲用戶輸入$username=$_POST["username"];$passWord=$_POST["password"];此示例從表單提交中提取用戶名和密碼,并將其存儲在變量中以供進一步處理。2.設(shè)置配置值$database_host="localhost";$database_username="username";$database_pa

標題:從入門到精通:Go語言中常用數(shù)據(jù)結(jié)構(gòu)的代碼實現(xiàn)數(shù)據(jù)結(jié)構(gòu)在編程中起著至關(guān)重要的作用,它是程序設(shè)計的基礎(chǔ)。在Go語言中,有許多常用的數(shù)據(jù)結(jié)構(gòu),掌握這些數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)方式對于成為一名優(yōu)秀的程序員至關(guān)重要。本文將介紹Go語言中常用的數(shù)據(jù)結(jié)構(gòu),并給出相應(yīng)的代碼示例,幫助讀者從入門到精通這些數(shù)據(jù)結(jié)構(gòu)。1.數(shù)組(Array)數(shù)組是一種基本的數(shù)據(jù)結(jié)構(gòu),是一組相同類型

Java選擇排序法代碼編寫指南及示例選擇排序是一種簡單直觀的排序算法,其思想是每次從未排序的元素中選擇最?。ɑ蜃畲螅┑脑剡M行交換,直到所有元素排序完成。本文將提供選擇排序的代碼編寫指南,并附上具體的Java示例代碼。算法原理選擇排序的基本原理是將待排序數(shù)組分為已排序和未排序兩部分,每次從未排序部分選擇最小(或最大)的元素,將其放到已排序部分的末尾。重復(fù)上述
