1 /**
 2 *获取天气预报信息
 3 **/
 4 header("Content-type: text/html; charset=utf-8");
 5 class getWeather{
 6     private $ak;
 7
 8     public function __construct($ak){
 9         if($ak){
10             $this->ak=$ak;
11         } else {
12             die('参数错误');exit;
13         }
14
15     }
16
17     /**
18      * 获取城市名称
19      * @param string $ip ip地址(必须为有效ip)
20      * return string $city  城市名称,如武汉
21     */
22     public function getCity($ip=''){
23         if(!$ip){
24             $ip=$this->get_client_ip();
25         }
26         $ak=$this->ak;
27         $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=$ak&ip=$ip&coor=bd09ll");
28         $json = json_decode($content,true);
29         if($json['status']==2){
30             $city='武汉';
31         }else{
32             $address=$json['address'];
33             $cityarr=explode("|", $address);
34             $city=$cityarr['2'];//不带"市",如"武汉",而不是"武汉市"
35         }
36         return $city;
37     }
38
39     /**
40      * 获取天气预报信息
41      * @param string $city  城市名称,如武汉
42      * return array $data 天气信息
43     */
44     public function weatherInfo($city=''){
45         if(!$city){
46             $city=$this->getCity();
47         }
48         $host = "http://jisutqybmf.market.alicloudapi.com";
49         $path = "/weather/query";
50         $method = "GET";
51         $appcode = "1215c3a301254ee79ca773ce9054f2ca";//阿里云appcode
52         $headers = array();
53         array_push($headers, "Authorization:APPCODE " . $appcode);
54         $querys = "city=$city&citycode=citycode&cityid=cityid&ip=ip&location=location";
55         $bodys = "";
56         $url = $host . $path . "?" . $querys;
57
58         $curl = curl_init();
59         curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
60         curl_setopt($curl, CURLOPT_URL, $url);
61         curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
62         curl_setopt($curl, CURLOPT_FAILONERROR, false);
63         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
64         curl_setopt($curl, CURLOPT_HEADER, false);
65         if (1 == strpos("$".$host, "https://"))
66         {
67             curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
68             curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
69         }
70         $result=curl_exec($curl);
71         $data=json_decode($result,true);
72         return $data;
73     }
74     /**
75     *获取ip
76     */
77     public function get_client_ip(){
78         if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
79             $ip = getenv("HTTP_CLIENT_IP");
80         }else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
81             $ip = getenv("HTTP_X_FORWARDED_FOR");
82         }else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
83             $ip = getenv("REMOTE_ADDR");
84         else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
85             $ip = $_SERVER['REMOTE_ADDR'];
86         else
87             $ip = "unknown";
88         return($ip);
89     }
90 }
91 $baiduak='CiEwAVN72cVAuHLzNRAMjzpY';//百度地图api的密钥
92 $wea=new getWeather($baiduak);
93 $json=$wea->weatherInfo();
94 print_r($json);exit;

转载于:https://www.cnblogs.com/wxfallstar/p/6826886.html

php定位并且获取天气信息相关推荐

  1. Android开发之和风天气篇:1、获取天气信息

    TIME:2020年7月6日 :1.获取天气信息 和风天气API使用方法: step1 申请天气接口 step2 天气接口初始化 step3 选择服务模式 step4 通过URL请求数据 step5解 ...

  2. java解析xml实例——获取天气信息

    获取xml并解析其中的数据: package getweather.xml;import java.io.IOException; import java.util.HashMap; import j ...

  3. STM32连接WIFI-ESP8266获取天气信息---STA模式运用

    1. 小白入门STA模式运用 前面章节讲解了AP模式运用,这节来探索STA模式如何使用.何谓STA模式呢?通俗来讲就是我们的WIFI模块,连接到可用的无线网络(如手机发射出来的热点或者家里路由器的热点 ...

  4. python通过调用百度天气API接口获取天气信息

    python调用百度接口,获取天气信息 需要到百度注册开发者账号,通过账号获取到每个账号私有的应用访问(AK) 使用此脚本还需要district_id.csv文档,在我资源中可以免费下载,也可在百度天 ...

  5. Android中基于心知天气API获取天气信息

    Android中基于心知天气获取天气信息 JSON JSON简介 JSON对象 JSON数组 JSON解析 Android中获取天气 获取天气的流程 获取心知天气的API key 获取心知天气的API ...

  6. 【Unity3D日常开发】获取天气信息以及地方位置

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  7. 微信小程序使用百度api获取天气信息 —— 微信小程序教程系列(16)

    之前已经介绍过,如何使用百度地图api来获取地理位置信息 微信小程序的百度地图获取地理位置 -- 微信小程序教程系列(15) 下面介绍使用百度api来获取天气信息. 1> 第一步:先到百度开放平 ...

  8. android调用在线天气服务,android通过google api获取天气信息示例

    android通过google API获取天气信息 复制代码 代码如下: public class WeatherActivity extends Activity { private TextVie ...

  9. STM32使用ESP8266模块AT指令连接心知天气API获取天气信息

    由于之前使用STM32单片机来开发一些物联网的小项目,接触到了WIFI模块ESP8266,所以写下来记录一下.本文主要介绍的是STM32通过发送AT指令集来控制ESP8266 WIFI模块连接WiFi ...

  10. android自动获取天气,android通过google api获取天气信息示例

    android通过google API获取天气信息 public class WeatherActivity extends Activity { private TextView txCity; p ...

最新文章

  1. 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
  2. 硬计算、软计算与混合计算
  3. python竖排文本_Calibre 5.0:高亮、Python 3、竖排文字
  4. Matlab图像剪切,超出图像区域指定颜色填充
  5. 如何使用ABP进行软件开发之基础概览
  6. 2011考研数学概率论基础复习必备知识点
  7. LeetCode387-字符串中的第一个唯一字符(查找,自定义数据结构)
  8. Java中Web程序修改配置文件不重启服务器的方法
  9. AnimalTFDB 3.0 | 动物转录因子注释和预测的综合资源库
  10. 遗传算法入门到掌握(二)
  11. python使用布隆过滤器筛选数据
  12. 最小公倍数最大公约数
  13. 数据结构笔记(十九)-- 二叉树性质
  14. 重磅:达摩院医疗AI团队CVPR'20论文解读 | 凌云时刻
  15. 操作系统实践课程实验报告 总结篇
  16. Eclipse用SVN上传新项目
  17. RNAcentral 数据库简介
  18. java8日期加减_JDK 8 三种时间获取方法 日期加减
  19. 自动驾驶汽车传感器技术解析—毫米波雷达
  20. [附源码]Python计算机毕业设计Django大学生考勤管理系统论文

热门文章

  1. C#中 构造函数的执行
  2. 设计模式--迭代器模式(C++实现)
  3. 小程序支付完整过程。足够详细!
  4. Collectors.averagingDouble()
  5. vue 第八天 小结 作业模拟购物车
  6. IDEA设置Maven组合命令一键编译打包发布
  7. 【渝粤教育】国家开放大学2018年秋季 0631-21T动物常见病防治 参考试题
  8. 国内外优秀的源码网站
  9. Oh-My-Zsh 下远程ssh的乱码问题
  10. Django--4、认证系统