Codebeispiel für eine API-Dienstanfrage für PHP-basierte aggregierte Daten zur nationalen Wettervorhersage
Bei diesem Codebeispiel handelt es sich um ein Codebeispiel für eine API-Dienstanfrage für aggregierte Daten auf PHP-Basis. Bevor Sie es verwenden können, benötigen Sie Folgendes:
①: Beantragen Sie einen Wettervorhersage-API-App-Schlüssel über https://www.juhe.cn/docs/api/id/39
Der Beispielcode umfasst die Implementierung des Abrufens einer Liste unterstützter Städte, des Abrufens von Wettervorhersagen basierend auf Städten, des Anforderns von Wettervorhersagen basierend auf IP-Adressen, des Anforderns von Wetter basierend auf GPS-Koordinaten und von 3-Stunden-Wettervorhersagen für Städte. Der Beispielcode analysiert hauptsächlich einige allgemeine Felder. Wenn Sie vollständige oder andere nicht enthaltene Felder benötigen, können Sie auf die offizielle Schnittstelle zurückgreifen und Änderungen vornehmen.
Erstens: Führen Sie die gekapselte Wetteraufrufklasse header('Content-type:text/html;charset=utf-8'); <br>
include 'class.juhe.weather.php'; //引入天气请求类 <br>
<br>
//接口基本信息配置 <br>
$appkey = '**********'; //您申请的天气查询appkey <br>
$weather = new weather($appkey);
header('Content-type:text/html;charset=utf-8') ein
include 'class.juhe.weather.php'; //Wetteranforderungsklasse einführen
$citysResult = $weather->getCitys(); <br>
if($citysResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 <br>
////////////////////////////////////////////////////////////////////// <br>
$citys = $citysResult['result']; <br>
foreach($citys as $ckey =>$c){ <br>
echo "ID:".$c['id'].",省份:".$c['province'].",城市:".$c['city'].",区域:".$c['district']."<br>"; <br>
} <br>
}else{ //以下可根据实际业务需求,自行改写 <br>
////////////////////////////////////////////////////////////////////// <br>
echo $citysResult['error_code'].":".$citysResult['reason']; <br>
}
//Grundlegende Informationskonfiguration der Schnittstelle
$appkey = '**********'; //Der von Ihnen beantragte Wetterabfrage-Appkey
$weather = neues Wetter($appkey);
1. Holen Sie sich die Liste der unterstützten Städte
Da sich die Liste der unterstützten Städte auf diese Weise grundsätzlich nicht ändert, können Sie die Liste abrufen und in Ihre eigene Anwendung integrieren, sodass Sie nicht jedes Mal die API anfordern müssen.
$citysResult = $weather->getCitys();
if($citysResult['error_code'] == 0){ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden
/////////////////////////////////////////////// //// /////////////////////
$citys = $citysResult['result'];
foreach($citys as $ckey =>$c){
echo "ID: ".$c['id'].", Provinz: ".$c['province']., Stadt: ".$c['city']., Region: ".$c ['Bezirk']."
";
}
}else{ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden
/////////////////////////////////////////////// //// /////////////////////
echo $citysResult['error_code'].::.$citysResult['reason'];
} 2. Wettervorhersage basierend auf Stadt/ID
Rufen Sie die Wettervorhersage über den Namen der Stadt oder die Stadt-ID ab. Die Stadt-ID ist die in der Stadtunterstützungsliste zurückgegebene Feld-ID
$cityWeatherResult = $weather->getWeather('Suzhou');
if($cityWeatherResult['error_code'] == 0){ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden
/////////////////////////////////////////////// //// /////////////////////
$data = $cityWeatherResult['result'];
echo "========Aktuelle Wetterbedingungen=======
";
echo "Temperatur: ".$data['sk']['temp']." ";
echo "Windrichtung: ".$data['sk']['wind_direction']." ("".$data['sk']['wind_strength'].")";
echo "Feuchtigkeit: ".$data['sk']['humidity']." ";
echo "
";
echo "========Wettervorhersage für die nächsten Tage=======
";
foreach($data['future'] as $wkey =>$f){
echo „Datum:“.$f[‘Datum‘].“ „.$f[‘Woche‘].“ „.$f[‘Wetter‘].“ „.$f[‘Temperatur‘].“< br>";
}
echo "
";
echo "========Zugehöriger Wetterindex=======
";
echo "Dressing-Index: ".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."
";echo "UV-Intensität:".$data['today']['uv_index']."
";
echo "Komfortindex:".$data['today']['comfort_index']."
";
echo „Autowaschindex:“.$data['today']['wash_index'];
echo "
";
}else{
echo $cityWeatherRe
3. Fordern Sie die entsprechende Wettervorhersage basierend auf der IP-Adresse des Benutzers an
Die Wettervorhersage für den Standort des Benutzers wird über die IP-Adresse des Benutzers abgerufen. Da es bei der Auflösung der IP-Adresse zu Fehlern kommen kann, ist die gefundene Stadt manchmal nicht unbedingt der tatsächliche Standort des Benutzers.
$ipWeatherResult = $weather->getWeatherByIP('58.215.154.128');
if($ipWeatherResult['error_code'] == 0){ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden
/////////////////////////////////////////////// //// /////////////////////
$data = $ipWeatherResult['result'];
echo "========Aktuelle Stadt=======
";
echo $data['today']['city'];
echo "
";
echo "========Aktuelle Wetterbedingungen=======
";
echo "Temperatur: ".$data['sk']['temp']." ";
echo "Windrichtung: ".$data['sk']['wind_direction']." ("".$data['sk']['wind_strength'].")";
echo "Feuchtigkeit: ".$data['sk']['humidity']." ";
echo "
";
echo "========Wettervorhersage für die nächsten Tage=======
";
foreach($data['future'] as $wkey =>$f){ $ipWeatherResult = $weather->getWeatherByIP('58.215.154.128'); <br>
if($ipWeatherResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 <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 "=======未来几天天气预报=======<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 "=======相关天气指数=======<br>"; <br>
echo "穿衣指数:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>"; <br>
echo "紫外线强度:".$data['today']['uv_index']."<br>"; <br>
echo "舒适指数:".$data['today']['comfort_index']."<br>"; <br>
echo "洗车指数:".$data['today']['wash_index']; <br>
echo "<br><br>"; <br>
<br>
}else{ <br>
echo $ipWeatherResult['error_code'].":".$ipWeatherResult['reason']; <br>
}
echo „Datum:“.$f[‘Datum‘].“ „.$f[‘Woche‘].“ „.$f[‘Wetter‘].“ „.$f[‘Temperatur‘].“< br>";
}
echo "<br><br>";
<br>
echo "========Zugehöriger Wetterindex=======<br>";
echo "Dressing-Index: ".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";
echo "UV-Intensität:".$data['today']['uv_index']."<br>";
echo "Komfortindex:".$data['today']['comfort_index']."<br>";
echo „Autowaschindex:“.$data['today']['wash_index'];
echo "<br><br>";
<br>
}else{ <br>
echo $ipWeatherResult['error_code'].::'.$ipWeatherResult['reason'];
} 4. Ermitteln Sie das Wetter im entsprechenden Gebiet anhand von GPS-Koordinaten
Unabhängig von der durch 2, 3 oder 4 erhaltenen Wettervorhersage ist der Parsing-Prozess aufgrund des einheitlichen Aggregationsformats derselbe, sodass außer einigen Unterschieden bei der Parameterübertragung keine zusätzlichen Vorgänge erforderlich sind. $geoWeatherResult = $weather->getWeatherByGeo(116.401394,39.916042);
if($geoWeatherResult['error_code'] == 0){ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden
/////////////////////////////////////////////// //// ///////////////////// $data = $geoWeatherResult['result'];
echo "========Aktuelle Stadt=======<br>";
echo $data['today']['city'];
echo "<br><br>";
echo "========Aktuelle Wetterbedingungen=======<br>";
echo "Temperatur: ".$data['sk']['temp']." ";
echo "Windrichtung: ".$data['sk']['wind_direction']." ("".$data['sk']['wind_strength'].")";
echo "Feuchtigkeit: ".$data['sk']['humidity']." ";
echo "<br><br>";
<br>
echo "========Wettervorhersage für die nächsten Tage=======<br>";
foreach($data['future'] as $wkey =>$f){ <br>
echo „Datum:“.$f[‘Datum‘].“ „.$f[‘Woche‘].“ „.$f[‘Wetter‘].“ „.$f[‘Temperatur‘].“< br>"; <br>
} <br>
echo "<br><br>";
<br>
echo "========Zugehöriger Wetterindex=======<br>";
echo "Dressing-Index: ".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";
echo "UV-Intensität:".$data['today']['uv_index']."<br>";
echo "Komfortindex:".$data['today']['comfort_index']."<br>";
echo „Autowaschindex:“.$data['today']['wash_index'];
echo "<br><br>";
<br>
}else{ <br>
echo $geoWeatherResult['error_code'].::.$geoWeatherResult['reason'];
} <br>5. Holen Sie sich die dreistündige Stadtvorhersage <br>
Es sind die Wetterbedingungen der Stadt alle 3 Stunden <br>$forecastResult = $weather->getForecast("Suzhou" <br>
if($forecastResult['error_code'] == 0){ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden <br>
/////////////////////////////////////////////// //// ///////////////////// <br>
$data = $forecastResult['result'];
foreach($data as $key => $d){ <br>
echo "Datum:".$d['date']." ("".$d['sh']."dot-".$d['eh']."dot) ".$d['weather' ]." ".$d['temp1']."~".$d["temp2"]."<br>";
} <br>
}else{ //Das Folgende kann entsprechend den tatsächlichen Geschäftsanforderungen umgeschrieben werden <br>
/////////////////////////////////////////////// //// ///////////////////// <br>
echo $forecastResult['error_code'].::.$forecastResult['reason'];
} <br>Durch den obigen Beispielcode sollte jeder ein allgemeines Verständnis dafür haben, wie die API für aggregierte Daten zur Wettervorhersage aufgerufen wird. <br>
Geben Sie abschließend den vollständigen Code von class.juhe.weather.php ein: <br><!--?php <br />
//------------------------------------------------ --------- <br />
// |. JuhePHP [NO ZUO NO DIE] <br />
//------------------------------------------------ --------- <br />// |. Copyright (c) 2010-2015 http://juhe.cn Alle Rechte vorbehalten
//------------------------------------------------ --------- <br />
// |. Autor: Juhedata <info@juhe.cn-->
//------------------------------------------------ --------- <br>
<br>
//---------------------------------- <br>
// Anforderungsklasse für die Schnittstelle zur Wettervorhersage für aggregierte Daten <br>
//---------------------------------- <br>
Klassenwetter{ <br>
Private $appkey = false; //Anwendung für aggregierte Wettervorhersage APPKEY <br>
<br>
Private $cityUrl = 'http://v.juhe.cn/weather/citys'; //Stadtlisten-API-URL <br>
<br>
Private $weatherUrl = 'http://v.juhe.cn/weather/index'; //Wetter-API-URL basierend auf der Stadt anfordern <br>
<br>
Private $weatherIPUrl = 'http://v.juhe.cn/weather/ip'; //Wetter-API-URL basierend auf IP-Adresse anfordern <br>
<br>
Private $weatherGeoUrl = 'http://v.juhe.cn/weather/geo'; // Wetter-API-URL basierend auf GPS-Koordinaten abrufen <br>
<br>
Private $forecast3hUrl = 'http://v.juhe.cn/weather/forecast3h' //Holen Sie sich die 3-Stunden-Wettervorhersage-API-URL für die Stadt <br>
<br>
Öffentliche Funktion __construct($appkey){ <br>
$this->appkey = $appkey;
} <br>
<br>
/**<br>
* Holen Sie sich die von der Wettervorhersage unterstützte Städteliste <br>
* @return-Array <br>
*/ <br>
Öffentliche Funktion getCitys(){ <br>
$params = 'key='.$this->appkey;
$content = $this->juhecurl($this->cityUrl,$params);
return $this->_returnArray($content);
} <br>
<br>
/**<br>
* Erhalten Sie eine detaillierte Wettervorhersage basierend auf dem Namen/der ID der Stadt <br>
* @param string $city [Name/ID der Stadt] <br>
* @return-Array <br>
*/ <br>
Öffentliche Funktion getWeather($city){ <br>
$paramsArray = array( <br>
'Key' = & gt; $ this- & gt;
‚Stadtname‘ => $city, <br>
'Format' = & gt; 2 <br>
); <br>
$params = http_build_query($paramsArray); <br>
$content = $this->juhecurl($this->weatherUrl,$params); <br>
return $this->_returnArray($content);
} <br>
<br>
/**<br>
* Erhalten Sie eine lokale Wettervorhersage basierend auf der IP-Adresse <br>
* @param string $ip [IP-Adresse] <br>
* @return-Array <br>
*/ <br>
Öffentliche Funktion getWeatherByIP($ip){ <br>
$paramsArray = array( <br>
'Schlüssel' => '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>
* Erhalten Sie eine lokale Wettervorhersage basierend auf GPS-Koordinaten <br>
* @param string $lon [Längengrad] <br>
* @param string $lat [Breitengrad] <br>
* @return-Array <br>
*/ <br>
öffentliche Funktion getWeatherByGeo($lon,$lat){ <br>
$paramsArray = array( <br>
'Schlüssel' => $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>
* Holen Sie sich die dreistündige Stadtvorhersage <br>
* @param string $city [Name der Stadt] <br>
* @return-Array <br>
*/ <br>
öffentliche Funktion getForecast($city){ <br>
$paramsArray = array( <br>
'Schlüssel' => $this->appkey, <br>
'Stadtname' => $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>
* Konvertieren Sie JSON-Inhalte in Daten und geben Sie <br> zurück
* @param string $content [content] <br>
* @return-Array <br>
*/ <br>
öffentliche Funktion _returnArray($content){ <br>
return json_decode($content,true); <br>
} <br>
<br>
/** <br>
* 请求接口返回内容 <br>
* @param string $url [请求的URL地址] <br>
* @param string $params [请求的参数] <br> * @param int $ipost [是否采用POST形式] <br>
* @return string <br>
*/ <br>
öffentliche Funktion 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, wie 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>
sonst <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 Fehler: " . 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>
}