智能桌面天气预报系统(四)
常持正念方圆梦;不忘初心总是春。
前言
紧接着前三篇文章,今天介绍windows下与天气服务器通信的测试方法。每个问题的解决往往都不能一步到位,要把这个问题的所有关键点找出来,着手去解决这些关键点,最终问题自然会得到解决。
同样的,虽然我们最终是用单片机控制WiFi模块来获取天气数据的,但是我们首先应该确保在没有单片机的情况下能获取得到天气数据,确保能和天气服务器正常通信。只有这样,在使用单片机获取数据遇到问题时才知道出错的范围在哪,便于我们进行调试。
所需工具
网络调试助手。小编使用的是SocketTool,SocketTool是一款小巧实用且功能强大的TCP/UDP网络通讯调试工具,可以帮助你检查网络应用软件及硬件的通讯情况,可以创建Socket服务器,如创建UDP组播地址及端口、创建UDP Client客户端、创建TCP Client、创建TCP Server。
此工具在后台回复:stool,即可获取
测试方法
(1)首先,使用SocketTool工具建立一个TCP Client,对方IP设为:116.62.81.138(这是心知天气服务器的IP地址),对方端口设为80。如:
怎么才能知道一个网站的IP呢?可以通过ping命令获取,具体操作如下:
在DOS黑窗口下输入“ping+域名”即可得该域名对应的IP。
ping是Windows、Unix和Linux系统下的一个命令,利用ping命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障,该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。
(2)发送HTTP请求,向心知天气服务器请求天气数据。HTTP有两种请求方法:
GET请求:从指定的资源请求数据。
POST请求:向指定的资源提交要被处理的数据。
显然,此处我们应该用GET请求方法。具体的请求方法为:
GET https://api.seniverse.com/v3/weather/now.json?key=2owqvhhd2dd9o9f9&location=beijing&language=zh-Hans&unit=c
其中,GET后面的URL地址可以上心知天气查看,如:
URL中的几个参数是可以设置的,
key:你的API密钥
location:所查询的地点
language:语言
unit:单位
在SocketTool工具中发送GET请求(首先先得点击“连接”按钮进行连接),发送格式如下:
需要注意的问题就是每个GET请求之后都需要空两行,这两个换行也是GET请求的一部分,所以在编写单片机代码时需要注意的是要在这个请求字符串后添加"\r\n\r\n",表示换两行。
服务器返回的天气数据为:
看看服务器返回的数据,发现中文都是乱码。原因是获取得的天气数据是utf-8格式,必须转换为GBK格式中文才能正常显示。此处,我们只是测试与服务器是否能正常交互,测试结果显示有数据返回,说明通过以上的GET请求时可以获取到数据的。
在应用到单片机上时,还需要考虑的问题就是怎么把utf-8格式转换为GBK格式的问题,转换后中文才能正常显示在显示屏上。
今天的分享就到这啦,这种测试方法在物联网中很重要哦。更多物联网笔记请持续关注本公众号
推 荐 阅 读