Home > Article > Backend Development > WeChat public account weather query interface example, public weather query example_PHP tutorial
这是来自百度API的一个天气查询的接口,支持历史7天和未来4天的天气情况查询,接口不错,分享给大家。
接口申请地址:http://apistore.baidu.com/apiworks/servicedetail/112.html
首先,获取一下apikey(貌似需要手机验证码认证下)
我调用的是历史7天和未来4天的接口,接口地址是:
http:<span>//</span><span>apis.baidu.com/apistore/weatherservice/recentweathers</span>
我将这个天气查询的功能集成在了微信公众平台上,支持未来4天天气查询,包括:当前温度、pm值、风向、风力、最高温度、最低温度、天气状态的查询,效果如下:
闲话不多说,我就喜欢来点直接的,核心代码如下:
<span> 1 <span>//<span>接收到文本信息 <span> 2 <span>private <span>function receiveText(<span>$object<span>){ <span> 3 <span>//<span>多个空格缩为一个 <span> 4 <span>$keyword = <span>$object-><span>Content; <span> 5 <span>$keyword=<span>preg_replace("/\s(?=\s)/","\\1",<span>$keyword<span>); <span> 6 <span>$funcFlag = 0<span>; <span> 7 <span>if(<span>strpos(<span>$keyword," "<span>)){ <span> 8 <span>//<span>echo '有空格'; <span> 9 <span>$arr = <span>explode(" ",<span>$keyword<span>); <span>10 <span>if(<span>$arr[0]=="天气"<span>){ <span>11 <span>$dateArray = <span>array<span>(); <span>12 <span>$ch =<span> curl_init(); <span>13 <span>$city=<span>urlencode(<span>$arr[1<span>]); <span>14 <span>$url = 'http://apis.baidu.com/apistore/weatherservice/recentweathers?cityname='.<span>$city<span>; <span>15 <span>$header = <span>array<span>( <span>16 'apikey: 6512ad3a465e3a9e3d0d1da56639626c', <span>17 <span> ); <span>18 curl_setopt(<span>$ch, CURLOPT_HTTPHEADER , <span>$header<span>); <span>19 curl_setopt(<span>$ch, CURLOPT_RETURNTRANSFER, 1<span>); <span>20 curl_setopt(<span>$ch , CURLOPT_URL , <span>$url<span>); <span>21 <span>$res = curl_exec(<span>$ch<span>); <span>22 <span>$data = json_decode(<span>$res,<span>true<span>); <span>23 <span>$cityname=<span>$data['retData']['city'<span>]; <span>24 <span>$citydate=<span>$data['retData']['today']['date'<span>]; <span>25 <span>$cityweek=<span>$data['retData']['today']['week'<span>]; <span>26 <span>$citytemp=<span>$data['retData']['today']['curTemp'<span>]; <span>27 <span>$citypm=<span>$data['retData']['today']['aqi'<span>]; <span>28 <span>$cityhightemp=<span>$data['retData']['today']['hightemp'<span>]; <span>29 <span>$citylowtemp=<span>$data['retData']['today']['lowtemp'<span>]; <span>30 <span>$citytype=<span>$data['retData']['today']['type'<span>]; <span>31 <span>$cityfengli=<span>$data['retData']['today']['fengli'<span>]; <span>32 <span>$cityfengxiang=<span>$data['retData']['today']['fengxiang'<span>]; <span>33 <span>$cityforecast=<span>$data['retData']['forecast'<span>]; <span>34 <span>35 <span>$out="今日温度:".<span>$citylowtemp."~".<span>$cityhightemp."\n\r"."当前温度:".<span>$citytemp."\n\r"."天气情况:".<span>$citytype."\n\r"."PM2.5值:".<span>$citypm."\n\r风向风力:".<span>$cityfengxiang." ".<span>$cityfengli<span>; <span>36 <span>$dateArray[] = <span>array("Title"=><span>$cityname."\n\r".<span>$citydate." ".<span>$cityweek,"Description"=>"","Picurl"=>"","Url" =>""<span>); <span>37 <span>$dateArray[] = <span>array("Title"=><span>$out,"Description"=>"","Picurl"=>"","Url" =>""<span>); <span>38 <span>for(<span>$i=0;<span>$i<<span>count(<span>$cityforecast);<span>$i++<span>){ <span>39 <span>$outstr="☀ ".<span>$cityforecast[<span>$i]["date"]." ".<span>$cityforecast[<span>$i]["week"]."\n\r气温:".<span>$cityforecast[<span>$i]["lowtemp"]."~".<span>$cityforecast[<span>$i]["hightemp"]."\n\r风力:".<span>$cityforecast[<span>$i]["fengxiang"]." ".<span>$cityforecast[<span>$i]["fengli"]."\n\r天气:".<span>$cityforecast[<span>$i]["type"<span>]; <span>40 <span>$dateArray[] = <span>array("Title"=><span>$outstr,"Description"=>"","Picurl"=>"","Url" =>""<span>); <span>41 <span> } <span>42 <span>$resultStr = <span>$this->transmitNews(<span>$object, <span>$dateArray, <span>$funcFlag<span>); <span>43 <span> } <span>44 }<span>else<span>{ <span>45 <span>//<span>echo '没有空格'; <span>46 if($keyword=="天气"){ 47 $dateArray = array(); 48 $dateArray[] = array("Title"=>"查询格式错误","Description"=>"","Picurl"=>"","Url" =>""); 49 $dateArray[] = array("Title"=>"正确格式例:天气 北京","Description"=>"","Picurl"=>"","Url" =>""); 50 $resultStr = $this->transmitNews($object, $dateArray, $funcFlag); 51 } 52 } 53 return $resultStr; 54 }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
查询格式:“天气 城市名”