PHP微信开发之查询城市天气


Posted in PHP onJune 23, 2016

PHP微信查询城市天气,首先,你需要找到一个获取天气的API,此处,我用的是百度的apistore,申请和使用API的网址:http://apistore.baidu.com/apiworks/servicedetail/112.html 

登录百度账号,并用手机发送请求获取apikey。有了apikey,可以按照它的示例来请求城市天气了。(可以按照城市中文名,拼音,城市编号等来查询) 

PHP微信开发之查询城市天气

你可以现在本地做测试,请求完成之后,再放到自己的域名空间的脚本里。
 测试的脚本例如:(注意apikey填写自己申请的) 

header('Content-type:text/html;charset=UTF-8');

$ch = curl_init();
$url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname=上海';
$header = array(
 'apikey: ',//你的apikey
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行HTTP请求
curl_setopt($ch , CURLOPT_URL , $url);
$res = curl_exec($ch);

$res = json_decode($res, true);
echo "<pre>";
print_r($res);
echo "</pre>";

$contentStr = "";

foreach($res as $k=>$v){
 if($k == "retData"){
 $contentStr = "城市:" . $v['city'] . "\n";
 $contentStr .= "日期:" . $v['date'] . "\n";
 $contentStr .= "天气:" . $v['weather'] ."\n";
 $contentStr .= "平均气温:" . $v['temp'] . "℃\n";
 $contentStr .= "最低气温:" . $v['l_tmp'] ."℃\n";
 $contentStr .= "最高气温:" . $v['h_tmp'] . "℃\n";
 $contentStr .= "风力:" . $v['WS'] . "\n";
 $contentStr .= "风向:" . $v['WD'] . "\n";
 $contentStr .= "日出时间:" . $v['sunrise'] . "\n";
 $contentStr .= "日落时间:" . $v['sunset'] . "\n";
 $contentStr .= "经度:" . $v['longitude'] . "\n";
 $contentStr .= "纬度:" . $v['latitude'];
 }
}

echo $contentStr;

如果你填写了自己的apikey,那么应该能获取到所请求的天气了: 

PHP微信开发之查询城市天气

如果能返回正常的数据了,那么就可以放到你的域名空间里了。(公众平台里开发者中心填写的url,该url有连接微信接口等功能)
如果你看不懂下面的代码或者第一次接触微信开发,可以参考我之前的文章:https://3water.com/article/87252.htm

下面的代码是responseMsg的一部分:   

public function responseMsg(){
 
<span style="white-space:pre"> </span>//get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信发来的XML数据

 //extract post data
 if(!empty($postStr)){
  
  //解析post来的XML为一个对象$postObj
  $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
 
  $fromUsername = $postObj->FromUserName; //请求消息的用户
  $toUsername = $postObj->ToUserName; //"我"的公众号id
  $keyword = trim($postObj->Content); //用户发送的消息内容
  $time = time(); //时间戳
  $msgtype = 'text'; //消息类型:文本
  $textTpl = "<xml>
 <ToUserName><![CDATA[%s]]></ToUserName>
 <FromUserName><![CDATA[%s]]></FromUserName>
 <CreateTime>%s</CreateTime>
 <MsgType><![CDATA[%s]]></MsgType>
 <Content><![CDATA[%s]]></Content>
 </xml>";

  if($postObj->MsgType == 'event'){ //如果XML信息里消息类型为event
  if($postObj->Event == 'subscribe'){ //如果是订阅事件
   $contentStr = "欢迎订阅misaka去年夏天!\n更多精彩内容:http://blog.csdn.net/misakaqunianxiatian";
   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
   echo $resultStr;
   exit();
  }
  }

  $which = mb_substr($keyword, 0, 2, 'UTF-8');//获取要返回什么样的信息

  if($which== "翻译"){ //如果要进行翻译
  //调用有道翻译API进行翻译

  }elseif($which == "天气"){
  $wea = $which;
  $city = str_replace($wea, "", $keyword);

  $ch = curl_init();
  $url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname=' . $city;
  $header = array('apikey: '); //此处的apikey使用自己申请的apikey,填在冒号之后

  // 添加apikey到header
  curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  // 执行HTTP请求
  curl_setopt($ch , CURLOPT_URL , $url);
  $res = curl_exec($ch);
  $res = json_decode($res, true);
  $contentStr = "";
  foreach($res as $k=>$v){

   if($k == "retData"){
   $contentStr = "城市:" . $v['city'] . "\n";
   $contentStr .= "日期:" . $v['date'] . "\n";
   $contentStr .= "天气:" . $v['weather'] ."\n";
   $contentStr .= "平均气温:" . $v['temp'] . "℃\n";
   $contentStr .= "最低气温:" . $v['l_tmp'] ."℃\n";
   $contentStr .= "最高气温:" . $v['h_tmp'] . "℃\n";
   $contentStr .= "风力:" . $v['WS'] . "\n";
   $contentStr .= "风向:" . $v['WD'] . "\n";
   $contentStr .= "日出时间:" . $v['sunrise'] . "\n";
   $contentStr .= "日落时间:" . $v['sunset'] . "\n";
   $contentStr .= "经度:" . $v['longitude'] . "\n";
   $contentStr .= "纬度:" . $v['latitude'];
   }
  }
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
  echo $resultStr;
  exit();

  }else{
  $contentStr = "输入翻译XXX可以进行翻译(=・ω・=)\n\n输入天气XX可以查询城市天气";
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
  echo $resultStr;
  exit();
  }


 

 

完成之后(别忘了填写apikey),你的订阅号里,输入天气上海,那么应该能查到上海当天的天气了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
基于文本的留言簿
Oct 09 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
php中http_build_query 的一个问题
Mar 25 PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
Symfony2函数用法实例分析
Mar 18 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 PHP
PHP微信开发之有道翻译
Jun 23 #PHP
PHP微信开发之文本自动回复
Jun 23 #PHP
php微信高级接口群发 多客服
Jun 23 #PHP
php英文单词统计器
Jun 23 #PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 #PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 #PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 #PHP
You might like
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
实例解析php的数据类型
2018/10/24 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
PHP PDO操作总结
2014/11/17 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python 字符串与数字输出方法
2018/07/16 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
pygame实现非图片按钮效果
2019/10/29 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
python如何更新包
2020/06/11 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
创业计划书——互联网商机
2014/01/12 职场文书
八项规定整改措施
2014/02/12 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
合作意向书格式及范文
2014/03/31 职场文书
活动总结模板大全
2015/05/11 职场文书