从企业钉钉的接口获取数据
公司需要,搞了一下钉钉的接口。
首先说明我是帮使用钉钉软件的客户通过钉钉的接口获取数据,所以说我是有权限的。如果你是ISV,去看官方文档吧。
我暂时还不知道ISV开发人员是什么需求,但是至少对于钉钉来说我觉得挺麻烦的。点击打开链接
这是钉钉的官方文档地址:点击打开链接
我搞了半天才分清一点ISV和非ISV是什么,反正大抵意思是一个授权和一个非授权的访问接口的方式。
非ISV开发人员需要获取access_token(好像是默认两小时生命周期,超过时间若在持续获取数据就会自动延续,否则过期需要重新获取。),
这个获取接口是https://oapi.dingtalk.com/gettoken?corpid=corpid&corpsecret=corpsecret,
其中的corpid和corpsecret这样获取:点击打开链接。
java get方式获取示例代码:
public static String get(String url) {String result = "";BufferedReader in = null;try {URL getUrl = new URL(url);URLConnection connection = getUrl.openConnection();// 建立http连接connection.setRequestProperty("Charset", "UTF-8");connection.setRequestProperty("accept", "*/*");// 设置通用的请求属性connection.connect();// 开始连接请求in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));//这里如果不加编码方式,解析请求回来的json可能中文乱码报错String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();} finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}
下面说POST方式获取数据,看一下接口文档就知道了,严格的参数要求,初次搞反正很蛋疼。
@SuppressWarnings("unchecked")public void post() throws Exception {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Calendar cal = Calendar.getInstance();String access_tokenJson = "https://oapi.dingtalk.com/gettoken?corpid=corpid&corpsecret=corpsecret";JSONObject accessJson = JSONObject.fromObject(get(access_tokenJson));DD_access_token token= (DD_access_token)JSONObject.toBean(accessJson,DD_access_token.class);/*钉钉取打卡记录的接口传参列表:{"userId": "员工在企业内的UserID,企业用来唯一标识用户的字段",//非必填"workDateFrom": "yyyy-MM-dd hh:mm:ss","workDateTo": "yyyy-MM-dd hh:mm:ss"}*/JSONObject jsonObj = new JSONObject();Date curTime = new Date();//jsonObj.put("userId", "userId");//userid查询条件jsonObj.put("workDateFrom", sdf.format(curTime)+" 00:00:00");jsonObj.put("workDateTo", sdf.format(curTime));String strURL = "https://oapi.dingtalk.com/attendance/list?access_token="+token.getAccess_token()+"";try {URL url = new URL(strURL);// 创建url资源HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 建立http连接conn.setDoOutput(true);// 设置允许输出conn.setDoInput(true);// 设置允许输入conn.setUseCaches(false);// 设置不用缓存conn.setRequestMethod("POST");// 设置传参方式conn.setRequestProperty("Charset", "UTF-8");conn.setRequestProperty("Content-Type", "application/json");conn.connect();// 开始连接请求OutputStream out = conn.getOutputStream();out.write((jsonObj.toString()).getBytes());// 写入请求的字符串out.flush();out.close();if (conn.getResponseCode() == 200) {// 请求返回的状态// 请求返回的数据InputStream in = conn.getInputStream();try {BufferedReader rd = new BufferedReader(new InputStreamReader(in,"UTF-8"));//这里可以用这个也可以直接用流,buffer的话就是多了个缓存功能int c = 0;StringBuffer temp = new StringBuffer();//请求接口获取json拼接字符串的话,比较长的返回结果String接收是不够的while((c = rd.read())!= -1){//这里可以用read也可用readLine,不清楚的话可以查一下两者区别temp.append((char)c);}JSONObject jsonobject = JSONObject.fromObject(temp.toString());JSONArray dkobject = JSONArray.fromObject(jsonobject.get("recordresult"));//这里就是将json转成对象或者集合List<Object> list = (List<Object>) JSONArray.toCollection(dkobject,Object.class);} catch (Exception e1) {e1.printStackTrace();}} else {System.out.println(String.valueOf(conn.getResponseCode()));;}} catch (Exception e) {e.printStackTrace();System.out.println("发送POST请求出现异常!" + e);}}
文中用到的JSONObject和JSONArray的包是
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
可以自行下载导入,maven的话直接贴地址到pom.xml就好
从企业钉钉的接口获取数据相关推荐
- java接口对接——别人调用我们接口获取数据
java接口对接--别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...
- java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中
最近做数据同步功能,从接口获取数据然后存到数据库中以便后续对数据进行相关操作,下面就贴一下相关代码. 1 import com.alibaba.fastjson.JSON; 2 import com. ...
- 怎么获取服务器接口文档,服务器接口获取数据
服务器接口获取数据 内容精选 换一换 伸缩组是具有相同应用场景的实例的集合,是启停伸缩策略和进行伸缩活动的基本单位.伸缩组内定义了最大实例数.期望实例数.最小实例数.虚拟私有云.子网.负载均衡等信息. ...
- vue获取接口数据_c#中HttpWebRequest调用接口获取数据
c#中HttpWebRequest调用接口获取数据PART 01-封装接口 将post请求进行封装,以便调用使用: /// /// 请求后台地址/// 请求参数/// public string P ...
- 如何利用python调用API接口获取数据进行测试
一.Python 可以使用 requests 库来调用 API 接口获取数据.以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests ...
- 通过接口获取数据登录
1,通过接口获取数据 我们通过接口获取数据需要配置本地开启代理 //vue.config.js const {defineConfig } = require('@vue/cli-service') ...
- 同花顺股票交易通过接口获取数据
同花顺股票交易通过接口获取数据
- 分享通达信软件L2接口获取数据的执行过程
在股票交易市场领域当中,通达信软件L2接口获取股票数据,用户根据得到的股票数据信息,做出合理的交易决策,让股票交易活动顺利进行. 通达信软件L2接口提供数据支撑,有了这些股票数据,经过了分析才能真实反 ...
- matlab 从 wind 量化接口获取数据
matlab 从 wind 量化接口获取数据 闲话 做量化,数据是非常重要的.wind 虽然说在数据方面也强不到哪里去,不过毕竟是行业的龙头老大.我实习所在的某机构公司就用有用 wind.所以,我终于 ...
最新文章
- 【shell】docker images 拿到ID
- 如何让进口商品拥有正品“身份证”?解析区块链技术的应用
- 注意System.currentTimeMillis()潜在的性能问题
- Django接入paypal的账户-准备工作
- 服务器系统bsd,BSD操作系统大盘点:其它BSD变体
- 一文快速掌握前端开发必备技能
- ADMT3.1快速迁移域用户账户和组[为企业维护windows server 2008系列十四]
- mysql 库名大小写_MySQL 库名、表名、字段名区分大小写吗???
- php遍历文件夹(获得文件名)
- EasyUI基础入门之Parser(解析器)
- 嵌入式系统、嵌入式设计软件概述
- python实战:基于链家网二手房数据解析任务
- android 倒水动画,Android 模拟圆形水杯倒水的效果
- hdu 3932 Groundhog Build Home
- MySQL系列——MySQL实现序列(Sequence)效果
- 乌龙钻白玉 白虎卧沙滩
- scrapy爬取微信公众号内容,多管道储存,orm数据储存
- 基于ssm的生活故事分享交流博客系统
- 笔记本开箱验机,防踩坑、测新机,确保自己不上当受骗
- Tokyo Dystopia 全文搜索
热门文章
- JavaEE学习笔记整理
- Centos操作系统yum源的使用
- Hash 表详解(哈希表)
- 有没有好记一点,c++ ,set容器遍历方法?(看过来)
- ks 曲线_ROC、KS曲线及AUC、KS值
- 软件开发管理规范(制度)
- org.springframework.web.client.HttpServerErrorException
- Debian8.8开发环境(四)个人设置之bashrc
- 运用KDJ交叉形态把握短期买卖点
- DXP的使用及绘制PCB