一、介绍
对于简单的WebAPI调用步骤主要有:
- 找到要调用的API接口并得知相应参数
- 为URL添加参数发送相应请求
- 返回相应信息
- 对返回的JSON文件(一般是JSON)进行处理
举个例子:
在中国气象数据网 http://data.cma.cn/ 中,有API接口服务:
注册成功后有7天免费接口使用:
下面有详细的接口调用说明:
URL为:
http://api.data.cma.cn:8090/api?userId=<帐号>&pwd=<密码>&dataFormat=json&
interfaceId=getSurfEleByTimeRangeAndStaID&dataCode=SURF_CHN_MUL_HOR&
timeRange=<时间范围>&staIDs=<台站列表>&elements=Station_Id_C,Year,Mon,Day,Hour,<要素列表>
其中
userId,pwd:分配给您的帐号和密码,从订单中获取
dataFormat:返回的数据格式,目前仅支持json格式
interfaceId:此数据的接口ID,值为getSurfEleByTimeRangeAndStaID
dataCode:此数据的编码,中国地面气象站逐小时观测资料的编码为SURF_CHN_MUL_HOR
timeRange:时间范围,支持最近7天的数据访问,格式为“[YYYYMMDDHHMISS,YYYYMMDDHHMISS]”
staIDs:站号,支持1-30个站点,多个站点之间以“,”分隔,参见中国地面气象站点清单文档
elements:返回数据字段,多个字段之间使用“,”分隔,其中:Station_Id_C, Year,Mon,Day,Hour为默认字段,Station_Id_C为站号,Year为资料时间的年,Mon为资料时间的月,Day为资料时间的日,Hour为资料时间的时,<要素列表>为您订单中订制的要素
只要把想要获取的信息按照相应的参数要求填入URL中的<>即可,例如我要获取时间范围为2019年6月4日0点到23点,台站序号为10000的温度信息,则相应的URL片段为/api.data.cma.cn:8090/api?userId=<帐号>&pwd=<密码>&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&dataCode=SURF_CHN_MUL_HOR&timeRange=[20190604000000,20190604230000]&staIDs=10000&elements=Station_Id_C,Year,Mon,Day,Hour,TEM
具体参数网站上会有详细文档给出
由于调用WebAPI返回的为JSON格式数据,需要利用JAVA相应的工具类对其进行解析,需要的包有:
链接: https://pan.baidu.com/s/18kKis8ayoiCo8_tGRXyj6g 提取码: 589e
程序逻辑如下:用户先输入站点序号,再输入所需要查询的时间区间,便能以小时为单位显示相应的温度信息。由于只是示例,我只进行了对温度、单个站点、一个时间段的一次性查询,读者可在此进行循环多个天气参数、城市、时间段的查询以及界面化延伸
二、代码
代码说明:输入站点序号,再输入所需要查询的时间区间,便能以小时为单位显示相应的温度信息
注意:JSON格式数据反序列化为对象时对类的属性首字母大小写貌似有要求,如果遇到错误可参考相应解决办法,若无则忽略。。。
- 创建的Weather类:
package API;
public class Weather {
private String STATION_Id_C;
private String YEAR;
private String MON;
private String DAY;
private String HOUR;
private double TEM;
public String getStation_Id_C() {
return STATION_Id_C;
}
public void setStati