zoukankan      html  css  js  c++  java
  • 【微信公众平台开发】封装获取天气预报功能

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/wyz365889/article/details/36677051


    微信公众平台小功能多点,能够添加用户的粘性,不会感觉你微信没内容,就把你给取消关注了。所以得折腾各种有的没的东西。

    个人封装天气预报功能代码例如以下(说明下:网上有非常多此类代码。可是要自己理解。就得实际折腾)
    <?

    php header('Content-Type:text/html;charset=utf-8'); class WeChatMsgType { private $toUserName; private $fromUserName; private $xmlModle; private $createTime; public function SetUserInfo($toUserName,$fromUserName) //设置用户信息 { $this->toUserName = $toUserName; $this->fromUserName = $fromUserName; $this->createTime = time(); } public function WeatherMsg($cityName) //天气预报信息 { $url = "http://api.map.baidu.com/telematics/v3/weather?location=".$cityName."&output=json&ak=11ffd27d38deda622f51c9d314d46b17"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $result = json_decode($output, true); if ($result["error"] != 0){ return $result["status"]; } $curHour = (int)date('H',time()); $weather = $result["results"][0]; $ImageTexts = array(); $ImageTexts[0] = self::SetImageTextInfo($weather['currentCity'].'天气预报',"", "", ""); //$aa=var_export(urldecode(urlencode($weather)),true); //file_put_contents("debug.txt", date("Y-m-d H:i:s",time()).$aa.PHP_EOL,FILE_APPEND); for($i=0; $i<count($weather['weather_data']); $i++) { $ImageTexts[$i+1] = self::SetImageTextInfo($weather["weather_data"][$i]["date"]." ". $weather["weather_data"][$i]["weather"]." ". $weather["weather_data"][$i]["wind"]." ". $weather["weather_data"][$i]["temperature"], "", (($curHour >= 6) && ($curHour < 18))?$weather["weather_data"][$i]["dayPictureUrl"]:$weather["weather_data"][$i]["nightPictureUrl"], ""); } return self::ImageTextMsg($ImageTexts); } public function SetImageTextInfo($sTitle, $sDescription, $sPicUrl, $Url) { $item = "<item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> "; $ret=sprintf($item, $sTitle, $sDescription, $sPicUrl,$Url); return $ret; } public function ImageTextMsg($ImageTexts) { $this->xmlModle = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>%d</ArticleCount> <Articles> "; foreach ($ImageTexts as $item) { $this->xmlModle = $this->xmlModle.$item; } $this->xmlModle = $this->xmlModle."</Articles></xml>" ; $ret=sprintf($this->xmlModle, $this->fromUserName, $this->toUserName, $this->createTime,count($ImageTexts)); return $ret; } } ?>


    调用使用方法:
    $weChatMsgType = new WeChatMsgType();
    $weChatMsgType->SetUserInfo($this->toUserName, $this->fromUserName);
    
    $resultStr=$weChatMsgType->WeatherMsg("北京");



    注:上面ak同百度周边搜索篇说明一样。不懂看前面


查看全文
  • 相关阅读:
    hdu5628 Clarke and math
    LOJ#2452. 「POI2010」反对称 Antisymmetry
    LOJ#2444. 「NOI2011」阿狸的打字机
    BZOJ2795: [Poi2012]A Horrible Poem
    LOJ#2427. 「POI2010」珍珠项链 Beads
    云主机文件系统readonly处理案例
    兼容性测试中如何切换和管理多个JDK版本
    Promise之你看得懂的Promise
    一次MySQL线上慢查询分析及索引使用
    考拉消息中心消息盒子处理重构(策略模式)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10662739.html
  • Copyright © 2011-2022 走看看