没时间做获取天气的实验 三分钟! 给您看清如何通过HTTP GET请求 获取天气预报


 

 

1. 注册心知天气账号,获取私钥

    下面这篇文章是图示讲解的,好东西,何不转载为快?

    http://www.taichi-maker.com/homepage/iot-development/iot-platform/seniverse/preparation/

 

    "GET https://api.seniverse.com/v3/weather/now.json?key=这里加上你的私钥&location=你要查询的城市中文拼音&language=zh-Hans&unit=c\r\n\r\n"

    这串字符就是你的HTTP的GET请求。

   GET请求的详细使用去新知天气的官网,这里面可以玩的花样也多的,支持最近几天的天气预报、湿度、风向风力等等,所以GET请求的复杂度也不一样。

   但是如果只查询一个城市的温度值,那么上面这个GET请求一般就够用了。这里为什么说一般够用?因为也有特例,例如全国内肯定有两个城市的名字的中文拼音是一样的,那么前面还可以加上省份的拼音的,所以,具体详情还是参考心知天气的官网( https://www.seniverse.com )最权威了。

 

2.那么在不写代码的情况下,我们怎么来快速获取天气预报体验一下呢?

 

方法1,笨方法 使用通信软件发送GET请求

   打开通信猫软件

   按图示1处输入和我一样的IP地址和端口号,  2处勾选好,  3处填入上述GET请求,注意,最后要空两行(敲两个回车键)! 4处点击发送, 然后就可以收到5处所示的信息了。

   我查询了杭州温度(location=hangzhou),可以看到返回的温度(temperature)是8度。 GET请求内,unit=c表示返回的单位是摄氏度。

 

方法2,使用浏览器发送GET请求

    打开浏览器,以我当前实验为例,输入 https://api.seniverse.com/v3/weather/now.json?key=SwwwfskBjB6fHVRon&location=hangzhou&language=zh-Hans&unit=c

    就可以收到返回的天气数据了。注意,这里就不需要前缀GET 和 后缀俩空行了, 就是普通的访问网站而已,相比使用通信猫软件就方便多了。

    PS:或者,你只要鼠标左键点击上述网址就可以实时查看到杭州现在的温度了。

 

3.写代码来获取天气预报

  我当前的实验基于ESP32,只需要简单修改ESP32的IDF内的一个Http的Demo就可以了。

  为什么只需要简单修改就可以了?因为这个功能本来就很简陋,我们刚才用浏览器获取天气预报的实验,其实就是输入了一个网址而已,然后就成事了,核心步骤就这么一步。

  所以说,基本上只要调通网络,不管是什么平台,实现这个功能都是不复杂的。

  继续正题,环境准备可以看这篇:

  ESP32的Linux开发环境搭建,将示例程序编译、下载、运行 

  https://www.cnblogs.com/happybirthdaytoyou/p/13996072.html

 

 打开该虚拟机, 将上图的http_request文件夹拷贝到下图路径内:

 

代码修改三处,见下图:

 

ESP32板子经过USB转TTL接入到ubuntu虚拟机内,

然后执行make flash monitor  ,  即执行程序烧录,打开串口

程序运行效果:

 

PS:心知天气返回的数据是UTF-8编码的

 

 

现在就收到了这串表示天气的字符串了,这是JSON格式的,需要解析,常见的有cJSON库。

 

江湖很大,你我相遇在此有一定缘分,可以考虑加个QQ群聊聊人生,技术离不开生活,生活离不开聊聊。    

.