从企业钉钉的接口获取数据

简介: 从企业钉钉的接口获取数据


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

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

目录
相关文章
|
5月前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
186 0
|
27天前
|
人工智能 自然语言处理 运维
钉钉x昇腾:用AI一体机撬动企业数字资产智能化
大模型在过去两年迅速崛起,正加速应用于各行各业。尤其在办公领域,其主要模态——文字和图片,成为了数字化办公的基础内容,催生了公文写作、表格生成、文本翻译等多种应用场景,显著提升了工作效率。然而,AI引入办公场景也带来了数据安全与成本等问题。为此,钉钉与昇腾联合推出的“钉钉专属AI一体机解决方案”,通过本地化部署解决了数据安全、成本高昂及落地难等痛点,实现了从硬件到软件的深度协同优化,为企业提供了开箱即用的AI服务,推动了办公场景的智能化升级。
56 11
|
1月前
详细教程:扫码提交表单后,数据直接推送到企业微信、钉钉、飞书群聊
在草料制作的表单中,填表人扫码填写并提交数据后,这些信息可以立即通过企业微信、钉钉或飞书自动推送到相应的群聊中,实现即时共享和沟通,提升团队协作效率。
|
4月前
|
人工智能 移动开发 IDE
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
钉钉是很多中小企业都爱用的产品,开通账号就能直接使用了,应用生态非常丰富,尤其是AI技术的应用,走在行业前列。但仍有很多企业对于全面拥抱SaaS服务充满了顾虑,尤其在内部资料的管理这块,即使钉钉在线文档已经提供了非常优秀的协作体验,不少客户仍更偏爱私有部署在局域网里面的企业文档管理系统。那么能将企业内部部署的文档管理系统集成到钉钉平台上面,和钉钉文档并行使用呢?市面上又有哪些企业文档管理系统软件支持与钉钉的集成呢?这也是很多企业客户的疑问。
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
|
4月前
|
jenkins 机器人 测试技术
jenkins接入钉钉api接口自动化测试报告自动发送
该教程介绍了如何在Jenkins上实现接口自动化测试的持续集成,并将可视化报告发送至钉钉工作群。首先,确保准备好了自动化脚本。接着配置Jenkins:安装Git插件,设置源代码管理(如Git)和触发器(定时或推送)。使用Post build task插件处理构建后的报告,读取Allure的prometheusData.txt文件以获取测试结果。最后,安装Ding Talk插件,配置钉钉机器人,通过 Dingtalkchatbot 库发送测试报告信息到钉钉群。整个流程包括Jenkins的定时构建、Git仓库的监听以及自动化报告发送到钉钉的通知。
82 1
|
5月前
|
数据可视化 数据挖掘 Serverless
数据推送上线 ,抢先体验,欢迎来用! 支持钉钉!
大多数业务都会有定期推送业务信息至钉钉、飞书、Teams 群的需求,有些信息要推三个群、要推两个群、有些信息要 at 人、有些要当天、有些要当月,不旦要管理多个推送的 Webhook,还要管理推送的内容、监控推送是否生效等等,DataWorks 新推出的数据推送能减轻以上问题,还能助力快速完成推送内容开发,支持规范的上线流程。
118 5
|
5月前
|
人工智能
|
5月前
|
敏捷开发 测试技术 持续交付
云效产品使用常见问题之企业钉钉解散后,不知道云效功能是否可以正常使用如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
运维 监控 安全
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
126 0
|
5月前
|
数据采集 边缘计算 监控
融合钉钉BPaaS,工业物联数据协同服务商「嘉泰智能」解题制造业人机协同
摘要:嘉泰智能定位于数字基础设施服务商,基于tSoC芯片架构,构建了硬“芯”科技和数“智”技术研发平台,在多个行业形成了数智场景解决方案能力。
186 0
融合钉钉BPaaS,工业物联数据协同服务商「嘉泰智能」解题制造业人机协同