钉钉任务创建并发送
添加maven依赖
<!--钉钉 SDK-->
<dependency><groupId>com.aliyun</groupId><artifactId>dingtalk</artifactId><version>1.4.31</version>
</dependency>
创建并发送任务
参考钉钉开放文档
access_token获取
={appkey}&appsecret={appsecret}
appkey 和 appsecret 来源于每个项目创建时的标识,如下
但是他的access_token是需要手动输入的,而access_token的有效期为两小时,所以当token有效期过了之后就需要再次获取并手动触发。
这样就很麻烦,所以为了减少手动操作,我们需要解析获取到的json数据。
解析第三方接口获取到的json
通过钉钉获取access_token接口获取到的json数据如下
接下来只需要解析返回的数据,并获取access_token,将获取到的token自动装入。
//调用接口,返回字符串
String url = "={appkey}&appsecret={appsecret};
String get = HttpUtil.get(url);
//将获取到的字符串转为json
JSONObject jsonObject = JSONObject.parseObject(get);
//将json封装进实体类
ResultResponse response = jsonObject.toJavaObject(ResultResponse.class);
//获取access_token
String token = createTaskHeaders.xAcsDingtalkAccessToken = response.getAccessToken();
实体类ResultResponse
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class ResultResponse {private String errcode;private String accessToken;private String errmsg;private String expiresIn;
}
redis实现token缓存
为了实现对token的管理,可以使用redis进行缓存。
首先需要引入redis并在yml文件中进行配置,此处省略。
定义redis用到的constants类
public class RedisConstants {public static final String REDIS_GROUP = "token:";public static final String DING_REFRESH = "refresh:";//设置刷新时间为1小时public static final Long REFRESH_TIME = 1L;
}
在实现类中将token放入redis
String key = stringRedisTemplate.opsForValue().get(RedisConstants.REDIS_GROUP + RedisConstants.DING_REFRESH + token);
//若token存在则直接返回
if (org.springframework.util.StringUtils.hasText(key)) {return key;
}
stringRedisTemplate.opsForValue().set(RedisConstants.REDIS_GROUP + RedisConstants.DING_REFRESH, token, RedisConstants.REFRESH_TIME, TimeUnit.HOURS);
更多推荐
钉钉任务创建并发送
发布评论