前言
本文记录了项目中用的天气接口的使用实例。
提示:以下是本篇文章正文内容,下面案例可供参考
一、定时任务(每天早上8点调取一次)
@Scheduled(cron = "0 0 8 * * *")
@PostConstruct
public void weather(){
log.info("开始调取天气接口......");
WeatherUtil.GetTodayTemperatureByCity("临沂");
}
二、WeatherUtil工具类
代码如下(示例):
package com.haitong.manage.util;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
import javax.annotation.PostConstruct;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class WeatherUtil {
public static Map weatherMap = new HashMap();
/**
* 根据城市名获取
* @param cityName
* @return
*/
private static String excute(String cityName){
log.info("城市名称:[" + cityName + "]");
try {
cityName = URLEncoder.encode(cityName,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String url=//此处以返回json格式数据示例,所以format=2,以根据城市名称为例,cityName传入中文
"http://v.juhe.cn/weather/index?cityname="+cityName+"&key=7d5ff76a1f053a26abf59e93ba87a952";
return HttpUtils.get(url);//通过工具类获取返回数据
}
/**
* 获取返回数据中的一个属性示例,此处以获取今日温度为例
* "temperature": "8℃~20℃" 今日温度
* @param city
* @return
*/
public static Map GetTodayTemperatureByCity(String city) {
log.info("天气基本接口。。。。");
String result= excute(city);
log.info("result==天气结果集为:["+result + "]");
if(result!=null){
JSONObject obj= JSONObject.fromObject(result);
/*获取返回状态码*/
result=obj.getString("resultcode");
/*如果状态码是200说明返回数据成功*/
if(result!=null&&result.equals("200")){
//此时result中数据有多个key,可以对其key进行遍历,得到对个属性
obj=JSONObject.fromObject(obj.getString("result"));
//今日温度对应的key是today
obj=JSONObject.fromObject(obj.getString("today"));
//今日温度对应当key是temperature
weatherMap.put("temperature",obj.getString("temperature"));
//今日云彩
weatherMap.put("weather",obj.getString("weather"));
//今日周几
weatherMap.put("week",obj.getString("week"));
//日期
weatherMap.put("date_y",obj.getString("date_y"));
return weatherMap;
}
}
return null;
}
}
总结
本文的天气接口是调用的聚合数据网开放的天气接口。