PHPベースの集約データ全国天気予報APIサービスリクエストのコードサンプル
このコード サンプルは、PHP ベースの集約データ全国天気予報 API サービス リクエストのコード サンプルです。 使用する前に、次のものが必要です。
①: https://www.juhe.cn/docs/api/id/39 を通じて天気予報 API アプリキーを申請します
サンプル コードには、サポートされている都市のリストの取得、都市に基づいた天気予報の取得、IP アドレスに基づいた天気予報の要求、GPS 座標に基づいた天気予報の要求、および都市の 3 時間の天気予報の実装が含まれています。サンプル コードは主にいくつかの一般的なフィールドを解析します。完全なフィールドや含まれていない他のフィールドが必要な場合は、公式インターフェイスを参照して変更を加えることができます。
まず、カプセル化された天気呼び出しクラス header('Content-type:text/html;charset=utf-8'); を導入します。
include 'class.juhe.weather.php' // 天気リクエストクラスを導入します <br>;
<br>
//インターフェースの基本情報の設定 <br>
$appkey = '************' //申請した天気クエリ appkey <br>;
$weather = 新しい天気 ($appkey) <br>1. サポートされている都市のリストを取得します。
サポートされている都市のリストは基本的にこのように変更されないため、リストを取得して独自のアプリケーションに組み込むことができるため、毎回 API をリクエストする必要はありません。
$citysResult = $weather->getCitys();
if($citysResult['error_code'] == 0){ //以下は実際のビジネスニーズに応じて書き換えることができます
//////////////////////////////////////////////// //// /////////////////////
$citys = $citysResult['結果'] <br>
foreach($citys as $ckey =>$c){ <br>
echo "ID: ".$c['id']."、州: ".$c['province']."、都市: ".$c['city']."、地域: ".$c ['地区']."<br>";
}<br>
}else{ //以下は実際のビジネスニーズに応じて書き換えることができます <br>
//////////////////////////////////////////////// //// ///////////////////// <br>
echo $citysResult['error_code'].":".$citysResult['reason'];
<br>2. 都市/ID に基づいて天気予報を取得します <br>
都市の名前または都市の ID を使用して天気予報を取得します。都市 ID は、都市サポート リストで返されるフィールド ID です <br>$cityWeatherResult = $weather->getWeather('Suzhou');
if($cityWeatherResult['error_code'] == 0){ //以下は実際のビジネスニーズに応じて書き換えることができます <br>
//////////////////////////////////////////////// //// ///////////////////// <br>
$data = $cityWeatherResult['結果']
エコー "=======現在の気象状況=======
";
echo "温度: ".$data['sk']['temp']." ";
echo "風向: ".$data['sk']['wind_direction']." (".$data['sk']['wind_strength'].")";
echo "湿度:".$data['sk']['湿度']." ";
エコー "
";
echo "=======今後数日間の天気予報=======
";
foreach($data['future'] as $wkey =>$f){
echo "日付:".$f['日付']." ".$f['週']." ".$f['天気']." ".$f['温度']."< br>"; <br>
}<br>
エコー "<br><br>";
<br>
echo "========関連する天気インデックス=======<br>";
echo "ドレッシングインデックス: ".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";echo "UV 強度:".$data['today']['uv_index']."<br>";
echo "快適さインデックス:".$data['today']['comfort_index']."<br>";
echo "洗車インデックス:".$data['today']['wash_index'] <br>
エコー "<br><br>";
<br>
}その他{ <br>
Echo $cityWeatherRe<br>3. ユーザーの IP アドレスに基づいて、対応する天気予報をリクエストします <br>
ユーザーの位置の天気予報はユーザーの IP アドレスを通じて取得されます。IP アドレスの解決には誤差がある可能性があるため、位置する都市がユーザーの実際の位置であるとは限りません。 <br>$ipWeatherResult = $weather->getWeatherByIP('58.215.154.128');
if($ipWeatherResult['error_code'] == 0){ //以下は実際のビジネスニーズに応じて書き換えることができます
//////////////////////////////////////////////// //// /////////////////////
$data = $ipWeatherResult['結果']
エコー "========現在の都市=======<br>";
エコー $data['today']['city'] <br>
エコー "<br><br>";
エコー "=======現在の気象状況=======<br>";
echo "温度: ".$data['sk']['temp']." ";
echo "風向: ".$data['sk']['wind_direction']." (".$data['sk']['wind_strength'].")";
echo "湿度:".$data['sk']['湿度']." ";
エコー "<br><br>";
<br>
echo "=======今後数日間の天気予報=======<br>";
foreach($data['future'] as $wkey =>$f){ <br>
echo "日付:".$f['日付']." ".$f['週']." ".$f['天気']." ".$f['温度']."< br>"; <br>
}<br>
エコー "<br><br>";
<br>
echo "========関連する天気インデックス=======<br>";
echo "ドレッシングインデックス: ".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";
echo "UV 強度:".$data['today']['uv_index']."<br>";
echo "快適さインデックス:".$data['today']['comfort_index']."<br>";
echo "洗車インデックス:".$data['today']['wash_index'] <br>
エコー "<br><br>";
<br>
}その他{ <br>
echo $ipWeatherResult['error_code'].":".$ipWeatherResult['reason'];
<br>4. GPS 座標に基づいて、対応するエリアの天気を取得します <br>
2、3、4のいずれで取得した天気予報であっても、集計形式が統一されているため、解析処理も同じであるため、パラメータ送信の一部の違いを除いて追加の操作はありません。 <br>$geoWeatherResult = $weather->getWeatherByGeo(116.401394,39.916042);
if($geoWeatherResult['error_code'] == 0){ //以下は実際のビジネスニーズに応じて書き換えることができます <br>
//////////////////////////////////////////////// //// ///////////////////// <br>$data = $geoWeatherResult['結果'] <br>
エコー "========現在の都市=======<br>";
エコー $data['today']['city'] <br>
エコー "<br><br>";
エコー "=======現在の気象状況=======<br>";
echo "温度: ".$data['sk']['temp']." ";
echo "風向: ".$data['sk']['wind_direction']." (".$data['sk']['wind_strength'].")";
echo "湿度:".$data['sk']['湿度']." ";
エコー "<br><br>";
<br>
echo "========今後数日間の天気予報=======<br>";
foreach($data['future'] as $wkey =>$f){ <br>
echo "日付:".$f['日付']." ".$f['週']." ".$f['天気']." ".$f['温度']."< br>"; <br>
}<br>
エコー "<br><br>";
<br>
エコー "========関連する天気インデックス=======<br>";
echo "ドレッシングインデックス: ".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";
echo "UV 強度:".$data['today']['uv_index']."<br>";
echo "快適さインデックス:".$data['today']['comfort_index']."<br>";
echo "洗車インデックス:".$data['today']['wash_index'] <br>
エコー "<br><br>";
<br>
}その他{ <br>
echo $geoWeatherResult['error_code'].":".$geoWeatherResult['reason'];
} <br>5. 3 時間の都市の天気予報を取得します <br>
3時間ごとの都市の気象状況です <br>$forecastResult = $weather->getForecast("蘇州");
if($forecastResult['error_code'] == 0){ //以下は実際のビジネスニーズに応じて書き換えることができます <br>
//////////////////////////////////////////////// /// ///////////////////// <br>
$data = $forecastResult['結果'] <br>
foreach($data as $key => $d){ <br>
echo "日付:".$d['date']." (".$d['sh']."point-".$d['eh']."point) ".$d['weather' ]." ".$d['temp1']."~".$d["temp2"]."<br>";
}<br />
}else{ //以下は実際のビジネスニーズに応じて書き換えることができます <br />
//////////////////////////////////////////////// /// ///////////////////// <br />
echo $forecastResult['error_code'].":".$forecastResult['reason'];
<br />上記のサンプル コードを通じて、誰もが集約データの天気予報 API を呼び出す方法を一般的に理解できるはずです。 <br />
最後に、class.juhe.weather.php の完全なコードを追加します: <br /><!--?php <br />
// +---------------------------------------------- --- ---------------------------------- <br />
// | JuhePHP [NO ZUO NO DIE]
// +---------------------------------------------- --- ----------------------------------
// | 著作権 (c) 2010-2015 http://juhe.cn 無断複写・転載を禁じます。
// +---------------------------------------------- --- ----------------------------------
// | 著者: Juhedata
//-------------------------------------------------
// 集約データ天気予報インターフェースリクエストクラス
//-------------------------------------------------
クラスの天気{
Private $appkey = false //集約天気予報のアプリケーション APPKEY
;
Private $cityUrl = 'http://v.juhe.cn/weather/citys' //都市リスト API URL
;
Private $weatherUrl = 'http://v.juhe.cn/weather/index' //都市に基づいて天気 API URL をリクエストします
;
Private $weatherIPUrl = 'http://v.juhe.cn/weather/ip' //IP アドレスに基づいて天気予報 API の URL をリクエストします
Private $weatherGeoUrl = 'http://v.juhe.cn/weather/geo' //GPS 座標に基づいて天気 API URL を取得します
Private $forecast3hUrl = 'http://v.juhe.cn/weather/forecast3h' // 都市の 3 時間天気予報 API URL を取得します
;
パブリック関数 __construct($appkey){
$this->appkey = $appkey;
}
/**
* 天気予報がサポートする都市リストを取得します
* * @戻り配列
*/
パブリック関数 getCitys(){
$params = 'key='.$this->appkey;
$ コンテンツ = $ This-> juhecurl ($ this-& gt; cityurl, $ params);
return $this->_returnArray($content);
}
/**
* 都市名/IDに基づいて詳細な天気予報を取得します
* @param string $city [都市名/ID]
* * @戻り配列
*/
パブリック関数 getWeather($city){
$paramsArray = array(
'キー' = & gt; これ - & gt;
「都市名」 => $city,
);
$params = http_build_query($paramsArray);
$ コンテンツ = $ this-> 天気URL, $ params;
return $this->_returnArray($content);
}
/**
* IPアドレスに基づいて地元の天気予報を取得します
* @param string $ip [IPアドレス]
* * @戻り配列
*/
パブリック関数 getWeatherByIP($ip){
$paramsArray = array(
'キー' = & gt; これ - & gt; 'ip' => $ip、
「フォーマット」 => 2
);
$params = http_build_query($paramsArray);
$content = $this->juhecurl($this->weatherIPUrl,$params);
return $this->_returnArray($content);
}
/**
* GPS 座標に基づいて地元の天気予報を取得します
* @param string $lon [経度]
* @param string $lat [緯度]
* * @戻り配列
*/
パブリック関数 getWeatherByGeo($lon,$lat){
$paramsArray = array(
「キー」 => $this->アプリキー、
'ロン' => $lon、
「緯度」 => $lat、
「フォーマット」 => 2
);
$params = http_build_query($paramsArray);
$content = $this->juhecurl($this->weatherGeoUrl,$params);
return $this->_returnArray($content);
}
/**
* 3時間の都市予報を取得します
* @param string $city [都市名]
* * @戻り配列
*/
パブリック関数 getForecast($city){
$paramsArray = array(
「キー」 => $this->アプリキー、
'都市名' => $city、
「フォーマット」 => 2
);
$params = http_build_query($paramsArray);
$content = $this->juhecurl($this->forecast3hUrl,$params);
return $this->_returnArray($content);
}
/**
* JSONコンテンツをデータに変換して返します
* @param string $content [コンテンツ]
* * @戻り配列
*/
public function_returnArray($content){
return json_decode($content,true);
}
/**
* 请要求窓口は内容を返します
* @param 文字列 $url [要求された URL 地址]
* @param 文字列 $params [要求のパラメータ]
* @param int $ipost [是否採用POST形式]
* @return 文字列
*/
public function juhecurl($url,$params=false,$ispost=0){
$httpInfo = array();
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, Gecko など) Chrome/41.0.2272.118 Safari/537.36');
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 );
curl_setopt( $ch, CURLOPT_TIMEOUT , 30);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
if( $ispost )
{
curl_setopt( $ch , CURLOPT_POST , true );
curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
curl_setopt( $ch , CURLOPT_URL , $url );
}
その他
{
if($params){
curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
}その他{
curl_setopt( $ch , CURLOPT_URL , $url);
}
}
$response = curl_exec( $ch );
if ($response === FALSE) {
//エコー「cURLエラー:」。 カール_エラー($ch);
false を返します。
}
$httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
$httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
curl_close( $ch );
$response を返します。
}
}