简介说明:当开发一个简易的天气app时,需要获取相关天气数据,至于这个数据来自哪里,我们这里使用开放大数据平台完全免费的---环境云;示例为androidstdio使用java语言,获取天气实况数据;
? ?首先我们要知道如天气数据:温度,湿度等数据信息怎么来的,当然是部署相关传感器到指定测量的地点,采集、收集并处理数据即可;但我们如果只是个人小项目开发,当然不会这么麻烦还去搞这些;这些工作已经有人帮我们做了,即大数据平台,他们已经做好这些工作我们只需要向他们提供的网络数据接口访问获取这些数据即可;当然你想使用其他平台也可以;
? ? 相信学习过《计算机网络》课程的应该比较清楚原理,这里简要介绍一下基本原理:
? ? IP地址:每台电脑都靠一个全球唯一的IP地址来接入互联网,这是接入互联网的主机的唯一标识;如47.35.26.54就是一个IP地址,我们可以指定IP地址去访问指定服务器,如通过百度服务器IP地址访问百度服务器;
? ? 域名:如www.baidu.com是百度服务器的域名,通过IP地址可以访问指定服务器,但随着互联网发展,有太多平台,显然通过记住每个IP地址去访问指定服务器太困难了,所以使用了域名这个东西,说白了就是IP地址的别名,其域名到IP地址的转换我们不用管;如浏览器输入百度域名就可以访问到百度服务器:
?
? ? 统一资源定位符url:仅仅访问到百度服务器还不够精细,我们还可以访问百度服务器指定的数据,通过指定协议指定端口和相关参数就可以标志一种比较具体的服务,如具体的一个网页;一个正确的url可以在浏览器输入获取相关信息,并正确响应;
? ? 协议方法:协议就是网络中信息传输的规则,如http协议,就可以使我们访问指定数据并在浏览器正确显示,我们通过使用http的指定方法如get()方法获取指定服务器的指定信息;
? ? 辅助技术:浏览器可以自动对获取的数据解析并指定显示格式,我们自己获取接口数据也需要,不然获取的信息就是一串数据流没有规则,一些辅助技术可以帮我们解析数据,如gson库,导入gson包后,使用相关方法更好的处理数据,选择我们有用的数据显示出来;
? ? 在项目中,首先导入辅助技术包,实现get方法,指定url,设置变量保存获取的数据,再使用辅助技术解析数据;当运行程序时,程序根据你指定的url访问到互联网的指定服务器,服务器的指定端口,根据参数获取指定信息;信息获取到后,解析保存到变量里,再显示我们需要的信息即可;
? ? 这里以安卓获取环境云平台天气数据为例:
1.选择我们需要的服务
2.一些通用的必要信息
基础URL:整个URL的前半部分,指定了服务器和端口但还未指定参数
城市编码:我们要获取指定城市的数据通过查询指定的城市编码:一串数字
用户密钥:注册环境云即可获得
选择服务:确定后半段的URL:功能参数,密钥,城市编码等
响应示例:就是访问后的结果示例,这个样子
最终URL确定:把前面几个部分正确拼接即可
如:URL =?
"http://service.envicloud.cn:8082/v2/weatherlive/MTG4MZKXMJY2NDKXNZAXNDQYMZKZOTMZ/101180801"
测试一下,在浏览器输入,正确响应
? ? 1.如果你需要解析数据,比如上述响应我们只想要取得指定字段的值,导入gson包进行解析
如:
implementation ("com.google.code.gson:gson:2.8.6")
? ? 2.我们程序使用了http的get方法实现,导入包
如:
implementation ("com.squareup.okhttp3:okhttp:4.9.0")
? ? 首先环境云平台也为我们提供了代码框架,可以选择语言,我们使用安卓,选择java的okhttp
具体实现
注:安卓比较特殊,关于网络和数据库相关的操作比如访问服务器,访问数据库必需在线程里实现
调用线程:
1.这个例子展示了获取环境云网络接口天气实况数据,根据需要可以获取其他你需要的数据
2.可以进一步数据处理,适当显示比如可以添加辅助天气图片
3.不同大数据平台,不同开发平台,不同语言都类似这个过程,仿照即可
?