调用天气接口


前言

本文记录了项目中用的天气接口的使用实例。


提示:以下是本篇文章正文内容,下面案例可供参考

一、定时任务(每天早上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;
}
}

总结

本文的天气接口是调用的聚合数据网开放的天气接口。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值