微信公众平台 天气查询功能 api调用
输入例如:烟台天气
实现时将烟台传给weather()方法,然后返回数据赋值给data。
实现代码:
<span style="font-size:18px;">if($str == 天气 && !empty($str_key)){ //天气查询
$data = $this->weather($str_key);
if(empty($data->retData)){
$contentStr = "抱歉,没有查到"".$str_key.""的天气信息!";
} else {
$contentStr = "【".$data->retData->city."天气预报】
".$data->retData->today->date."日".
"
今天
".$data->retData->today->type." ".$data->retData->today->lowtemp."~".$data->retData->today->hightemp."
".$data->retData->today->fengxiang." ".$data->retData->today->fengli."
当前气温 ".$data->retData->today->curTemp."
温馨提示:".$data->retData->today->index[0]->details."
明天
".$data->retData->forecast[0]->type." ".$data->retData->forecast[0]->lowtemp."~".$data->retData->forecast[0]->hightemp."
".$data->retData->forecast[0]->fengxiang." ".$data->retData->forecast[0]->fengli."
后天
".$data->retData->forecast[1]->type." ".$data->retData->forecast[1]->lowtemp."~".$data->retData->forecast[1]->hightemp."
".$data->retData->forecast[1]->fengxiang." ".$data->retData->forecast[1]->fengli."";
}
}</span>
weather()方法:
<span style="font-size:18px;"> private function weather($n){
if(!empty($n)){
$ch = curl_init();
$url = http://apis.baidu.com/apistore/weatherservice/recentweathers?cityname=.urlencode($n);
$header = array(
apikey: xxxxxxxxxxxx,//key需要去注册获得
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行HTTP请求
curl_setopt($ch , CURLOPT_URL , $url);
$json = curl_exec($ch);
return json_decode($json);
} else {
return null;
}
}</span>
curl_exec()返回json数据,需要调用json_decode()解析json数据后作为返回值返回。
