公司需要,搞了一下钉钉的接口。

首先说明我是帮使用钉钉软件的客户通过钉钉的接口获取数据,所以说我是有权限的。如果你是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就好

从企业钉钉的接口获取数据相关推荐

  1. java接口对接——别人调用我们接口获取数据

    java接口对接--别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  2. java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中

    最近做数据同步功能,从接口获取数据然后存到数据库中以便后续对数据进行相关操作,下面就贴一下相关代码. 1 import com.alibaba.fastjson.JSON; 2 import com. ...

  3. 怎么获取服务器接口文档,服务器接口获取数据

    服务器接口获取数据 内容精选 换一换 伸缩组是具有相同应用场景的实例的集合,是启停伸缩策略和进行伸缩活动的基本单位.伸缩组内定义了最大实例数.期望实例数.最小实例数.虚拟私有云.子网.负载均衡等信息. ...

  4. vue获取接口数据_c#中HttpWebRequest调用接口获取数据

    c#中HttpWebRequest调用接口获取数据PART  01-封装接口 将post请求进行封装,以便调用使用: /// /// 请求后台地址/// 请求参数/// public string P ...

  5. 如何利用python调用API接口获取数据进行测试

    一.Python 可以使用 requests 库来调用 API 接口获取数据.以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests ...

  6. 通过接口获取数据登录

    1,通过接口获取数据 我们通过接口获取数据需要配置本地开启代理 //vue.config.js const {defineConfig } = require('@vue/cli-service') ...

  7. 同花顺股票交易通过接口获取数据

    同花顺股票交易通过接口获取数据

  8. 分享通达信软件L2接口获取数据的执行过程

    在股票交易市场领域当中,通达信软件L2接口获取股票数据,用户根据得到的股票数据信息,做出合理的交易决策,让股票交易活动顺利进行. 通达信软件L2接口提供数据支撑,有了这些股票数据,经过了分析才能真实反 ...

  9. matlab 从 wind 量化接口获取数据

    matlab 从 wind 量化接口获取数据 闲话 做量化,数据是非常重要的.wind 虽然说在数据方面也强不到哪里去,不过毕竟是行业的龙头老大.我实习所在的某机构公司就用有用 wind.所以,我终于 ...

最新文章

  1. 【shell】docker images 拿到ID
  2. 如何让进口商品拥有正品“身份证”?解析区块链技术的应用
  3. 注意System.currentTimeMillis()潜在的性能问题
  4. Django接入paypal的账户-准备工作
  5. 服务器系统bsd,BSD操作系统大盘点:其它BSD变体
  6. 一文快速掌握前端开发必备技能
  7. ADMT3.1快速迁移域用户账户和组[为企业维护windows server 2008系列十四]
  8. mysql 库名大小写_MySQL 库名、表名、字段名区分大小写吗???
  9. php遍历文件夹(获得文件名)
  10. EasyUI基础入门之Parser(解析器)
  11. 嵌入式系统、嵌入式设计软件概述
  12. python实战:基于链家网二手房数据解析任务
  13. android 倒水动画,Android 模拟圆形水杯倒水的效果
  14. hdu 3932 Groundhog Build Home
  15. MySQL系列——MySQL实现序列(Sequence)效果
  16. 乌龙钻白玉 白虎卧沙滩
  17. scrapy爬取微信公众号内容,多管道储存,orm数据储存
  18. 基于ssm的生活故事分享交流博客系统
  19. 笔记本开箱验机,防踩坑、测新机,确保自己不上当受骗
  20. Tokyo Dystopia 全文搜索

热门文章

  1. JavaEE学习笔记整理
  2. Centos操作系统yum源的使用
  3. Hash 表详解(哈希表)
  4. 有没有好记一点,c++ ,set容器遍历方法?(看过来)
  5. ks 曲线_ROC、KS曲线及AUC、KS值
  6. 软件开发管理规范(制度)
  7. org.springframework.web.client.HttpServerErrorException
  8. Debian8.8开发环境(四)个人设置之bashrc
  9. 运用KDJ交叉形态把握短期买卖点
  10. DXP的使用及绘制PCB