这是来自百度api的一个天气查询的接口,支持历史7天和未来4天的天气情况查询,接口不错,分享给大家。
接口申请地址:http://apistore.baidu.com/apiworks/servicedetail/112.html
首先,获取一下apikey(貌似需要手机验证码认证下)
我调用的是历史7天和未来4天的接口,接口地址是:
http:<span style="color: #008000;">//</span><span style="color: #008000;">apis.baidu.com/apistore/weatherservice/recentweathers</span>
我将这个天气查询的功能集成在了微信公众平台上,支持未来4天天气查询,包括:当前温度、pm值、风向、风力、最高温度、最低温度、天气状态的查询,效果如下:
闲话不多说,我就喜欢来点直接的,核心代码如下:
<span style="color: #008080;"> 1 <span style="color: #008000;">//<span style="color: #008000;">接收到文本信息<span style="color: #008080;"> 2 <span style="color: #0000ff;">private <span style="color: #0000ff;">function receiveText(<span style="color: #800080;">$object<span style="color: #000000;">){<span style="color: #008080;"> 3 <span style="color: #008000;">//<span style="color: #008000;">多个空格缩为一个<span style="color: #008080;"> 4 <span style="color: #800080;">$keyword = <span style="color: #800080;">$object-><span style="color: #000000;">Content;<span style="color: #008080;"> 5 <span style="color: #800080;">$keyword=<span style="color: #008080;">preg_replace("/\s(?=\s)/","\\1",<span style="color: #800080;">$keyword<span style="color: #000000;">);<span style="color: #008080;"> 6 <span style="color: #800080;">$funcFlag = 0<span style="color: #000000;">;<span style="color: #008080;"> 7 <span style="color: #0000ff;">if(<span style="color: #008080;">strpos(<span style="color: #800080;">$keyword," "<span style="color: #000000;">)){<span style="color: #008080;"> 8 <span style="color: #008000;">//<span style="color: #008000;">echo '有空格';<span style="color: #008080;"> 9 <span style="color: #800080;">$arr = <span style="color: #008080;">explode(" ",<span style="color: #800080;">$keyword<span style="color: #000000;">);<span style="color: #008080;">10 <span style="color: #0000ff;">if(<span style="color: #800080;">$arr[0]=="天气"<span style="color: #000000;">){<span style="color: #008080;">11 <span style="color: #800080;">$dateArray = <span style="color: #0000ff;">array<span style="color: #000000;">();<span style="color: #008080;">12 <span style="color: #800080;">$ch =<span style="color: #000000;"> curl_init();<span style="color: #008080;">13 <span style="color: #800080;">$city=<span style="color: #008080;">urlencode(<span style="color: #800080;">$arr[1<span style="color: #000000;">]);<span style="color: #008080;">14 <span style="color: #800080;">$url = 'http://apis.baidu.com/apistore/weatherservice/recentweathers?cityname='.<span style="color: #800080;">$city<span style="color: #000000;">;<span style="color: #008080;">15 <span style="color: #800080;">$header = <span style="color: #0000ff;">array<span style="color: #000000;">(<span style="color: #008080;">16 'apikey: 6512ad3a465e3a9e3d0d1da56639626c',<span style="color: #008080;">17 <span style="color: #000000;"> );<span style="color: #008080;">18 curl_setopt(<span style="color: #800080;">$ch, CURLOPT_HTTPHEADER , <span style="color: #800080;">$header<span style="color: #000000;">);<span style="color: #008080;">19 curl_setopt(<span style="color: #800080;">$ch, CURLOPT_RETURNTRANSFER, 1<span style="color: #000000;">);<span style="color: #008080;">20 curl_setopt(<span style="color: #800080;">$ch , CURLOPT_URL , <span style="color: #800080;">$url<span style="color: #000000;">);<span style="color: #008080;">21 <span style="color: #800080;">$res = curl_exec(<span style="color: #800080;">$ch<span style="color: #000000;">);<span style="color: #008080;">22 <span style="color: #800080;">$data = json_decode(<span style="color: #800080;">$res,<span style="color: #0000ff;">true<span style="color: #000000;">);<span style="color: #008080;">23 <span style="color: #800080;">$cityname=<span style="color: #800080;">$data['retData']['city'<span style="color: #000000;">];<span style="color: #008080;">24 <span style="color: #800080;">$citydate=<span style="color: #800080;">$data['retData']['today']['date'<span style="color: #000000;">];<span style="color: #008080;">25 <span style="color: #800080;">$cityweek=<span style="color: #800080;">$data['retData']['today']['week'<span style="color: #000000;">];<span style="color: #008080;">26 <span style="color: #800080;">$citytemp=<span style="color: #800080;">$data['retData']['today']['curTemp'<span style="color: #000000;">];<span style="color: #008080;">27 <span style="color: #800080;">$citypm=<span style="color: #800080;">$data['retData']['today']['aqi'<span style="color: #000000;">];<span style="color: #008080;">28 <span style="color: #800080;">$cityhightemp=<span style="color: #800080;">$data['retData']['today']['hightemp'<span style="color: #000000;">];<span style="color: #008080;">29 <span style="color: #800080;">$citylowtemp=<span style="color: #800080;">$data['retData']['today']['lowtemp'<span style="color: #000000;">];<span style="color: #008080;">30 <span style="color: #800080;">$citytype=<span style="color: #800080;">$data['retData']['today']['type'<span style="color: #000000;">];<span style="color: #008080;">31 <span style="color: #800080;">$cityfengli=<span style="color: #800080;">$data['retData']['today']['fengli'<span style="color: #000000;">];<span style="color: #008080;">32 <span style="color: #800080;">$cityfengxiang=<span style="color: #800080;">$data['retData']['today']['fengxiang'<span style="color: #000000;">];<span style="color: #008080;">33 <span style="color: #800080;">$cityforecast=<span style="color: #800080;">$data['retData']['forecast'<span style="color: #000000;">];<span style="color: #008080;">34 <span style="color: #008080;">35 <span style="color: #800080;">$out="今日温度:".<span style="color: #800080;">$citylowtemp."~".<span style="color: #800080;">$cityhightemp."\n\r"."当前温度:".<span style="color: #800080;">$citytemp."\n\r"."天气情况:".<span style="color: #800080;">$citytype."\n\r"."PM2.5值:".<span style="color: #800080;">$citypm."\n\r风向风力:".<span style="color: #800080;">$cityfengxiang." ".<span style="color: #800080;">$cityfengli<span style="color: #000000;">;<span style="color: #008080;">36 <span style="color: #800080;">$dateArray[] = <span style="color: #0000ff;">array("Title"=><span style="color: #800080;">$cityname."\n\r".<span style="color: #800080;">$citydate." ".<span style="color: #800080;">$cityweek,"Description"=>"","Picurl"=>"","Url" =>""<span style="color: #000000;">);<span style="color: #008080;">37 <span style="color: #800080;">$dateArray[] = <span style="color: #0000ff;">array("Title"=><span style="color: #800080;">$out,"Description"=>"","Picurl"=>"","Url" =>""<span style="color: #000000;">);<span style="color: #008080;">38 <span style="color: #0000ff;">for(<span style="color: #800080;">$i=0;<span style="color: #800080;">$icount(<span style="color: #800080;">$cityforecast);<span style="color: #800080;">$i++<span style="color: #000000;">){<span style="color: #008080;">39 <span style="color: #800080;">$outstr="☀ ".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["date"]." ".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["week"]."\n\r气温:".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["lowtemp"]."~".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["hightemp"]."\n\r风力:".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["fengxiang"]." ".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["fengli"]."\n\r天气:".<span style="color: #800080;">$cityforecast[<span style="color: #800080;">$i]["type"<span style="color: #000000;">];<span style="color: #008080;">40 <span style="color: #800080;">$dateArray[] = <span style="color: #0000ff;">array("Title"=><span style="color: #800080;">$outstr,"Description"=>"","Picurl"=>"","Url" =>""<span style="color: #000000;">);<span style="color: #008080;">41 <span style="color: #000000;"> }<span style="color: #008080;">42 <span style="color: #800080;">$resultStr = <span style="color: #800080;">$this->transmitNews(<span style="color: #800080;">$object, <span style="color: #800080;">$dateArray, <span style="color: #800080;">$funcFlag<span style="color: #000000;">);<span style="color: #008080;">43 <span style="color: #000000;"> }<span style="color: #008080;">44 }<span style="color: #0000ff;">else<span style="color: #000000;">{<span style="color: #008080;">45 <span style="color: #008000;">//<span style="color: #008000;">echo '没有空格';<span style="color: #008080;">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>
查询格式:“天气 城市名”
标签: apistore
免责声明:本站内容仅用于学习参考,信息和图片素材来源于互联网,如内容侵权与违规,请联系我们进行删除,我们将在三个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)