远程访问接口和定时任务

RestTemplate接口远程访问

  • 在java代码里访问restful服务,可以使用apache的HttpClient。
  • 同时在spring-data框架中提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接,只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
public class RestTemplateTest {

    public static void main(String[] args) {

        RestTemplate t = new RestTemplate();
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("M/d");
        String today = format.format(date);
        String object = t.getForObject("http://v.juhe.cn/todayOnhistory/queryEvent.php?key=聚合数据的key&date="+today, String.class);
//        t.postForObject();
//        t.put();
//        t.delete();
        JSONObject jsonObject = JSON.parseObject(object);
        Object result = jsonObject.get("result");
        System.out.println(result);
    }
}

// restful风格接口的数据接收
     String str = rt.getForObject("http://localhost:8080/user/{1}/{2}", String.class,"111",,"222");
//        Map<String,String> map = new HashMap<>();
//        map.put("phone","33333");
//        String str = rt.getForObject("http://localhost:8080/user/{phone}", String.class, map);

定时任务

  • 创建任务类
  • 启动任务,设置任务的第一次执行时间,设置执行间隔

jdk:TimerTask

  • 用在程序运行中执行定时任务。
public class GetDataTask extends TimerTask {
    @Override
    public void run() {
        System.out.println("获取接口数据");

    }
}
public class TimerTaskTest {
    public static void main(String[] args) throws ParseException {
        Timer timer = new Timer();
        // 延迟5秒执行,同时每隔5秒执行一次
        timer.schedule(new GetDataTask(),5000,5000);

        // 指定时间执行
        String time = "2020-08-10 18:38:20";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = format.parse(time);
        timer.schedule(new GetDataTask(),date);

    }
}

spring:task

  • 用在程序启动之前,已经定好了一些任务的执行策略。
  • spring中配置
<!--定时任务,scheduled注解识别-->
<task:annotation-driven></task:annotation-driven>
@Component
public class SpringTaskTest {

    @Scheduled(cron = "0 0 20 ? * 2-6") // cron表达式,星期和日必有一个是问号
    public void dateData(){
        RestTemplate restTemplate = new RestTemplate();
        String template = restTemplate.getForObject("http://v.juhe.cn/todayOnhistory/queryEvent.php?key=key&date=8/10", String.class);
        JSONObject parseObject = JSON.parseObject(template);
        Object result = parseObject.get("result");
        System.out.println(result);

    }
}
  • 就是在远程接口上加了scheduled注解。

cron表达式详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值