钉钉接口:获取accessToken和打卡记录

post和get方法工具类:HttpUtils

package weaver.dingtalk.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import weaver.interfaces.email.SSLClient;

import java.util.ArrayList;
import java.util.List;

/**
 * http请求工具类
 * @author lcs
 */
public class HttpUtils {

    public static String doPost(String url, JSONObject jsonObject, String charset){
        HttpClient httpClient = null;
        HttpPost httpPost = null;
        String result = null;
        try{
            httpClient = new SSLClient();
            httpPost = new HttpPost(url);
            //设置参数
            List<NameValuePair> list = new ArrayList<NameValuePair>();
            StringEntity entity = new StringEntity(jsonObject.toString(),charset);
            entity.setContentEncoding("UTF-8");
            entity.setContentType("application/json");
            httpPost.setEntity(entity);

            HttpResponse response = httpClient.execute(httpPost);
            if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                HttpEntity resEntity = response.getEntity();
                if(resEntity != null){
                    result = EntityUtils.toString(resEntity,charset);
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return result;
    }

    public static String doGet(String url){
        String result = null;
        HttpGet request = new HttpGet(url);
        HttpClient httpClient = new DefaultHttpClient();
        try {
            HttpResponse response = httpClient.execute(request);
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                result= EntityUtils.toString(response.getEntity(),"utf-8");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }
}

钉钉接口方法:DingTalkService

package weaver.dingtalk.service;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import weaver.dingtalk.utils.HttpUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * DingTalk相关方法
 * @author 刘春生
 */
public class DingTalkService {

    /**
     * 获取钉钉的accessToken
     * @param url
     * @param corpid
     * @param secret
     * @return
     */
    public static String getAccessToken(String url,String corpid,String secret){
        String requestUrl = url + "?corpid="+corpid+"&corpsecret="+secret;
        String result = HttpUtils.doGet(requestUrl);
        String accessToken = null;
        JSONObject jsonObject = new JSONObject();
        jsonObject = JSON.parseObject(result);
        String msg = (String)jsonObject.get("errmsg");
        if("ok".equals(msg)){
            accessToken = (String)jsonObject.get("access_token");
        }
        return accessToken;
    }

    public static JSONArray getCardList(String accessToken, String workDateFrom, String workDateTo, String offset, String limit){
        String recordUrl = "https://oapi.dingtalk.com/attendance/list?access_token="+accessToken;
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("workDateFrom",workDateFrom);
        jsonObject.put("workDateTo",workDateTo);
        jsonObject.put("offset",offset);
        jsonObject.put("limit",limit);
        String result = HttpUtils.doPost(recordUrl,jsonObject,"utf-8");
        JSONObject resutJSON = JSONObject.parseObject(result);
        String msg = (String)resutJSON.get("errmsg");
        JSONArray jsonArray = null;
        if("ok".equals(msg)){
            jsonArray = (JSONArray) resutJSON.get("recordresult");
        }
        return jsonArray;
    }
}

测试方法:TestDingTalk

package weaver.dingtalk.service;

import com.alibaba.fastjson.JSONArray;

public class TestDingTalk {
    public static void main(String[] args) {
        String workDateFrom = "2017-11-03 08:00:00";
        String workDateTo = "2017-11-03 18:00:00";
        String offset = "0";//分页获取数据,0表示第一页
        String limit = "10";//每页10条数据
        String accessTokenUrl = "https://oapi.dingtalk.com/gettoken";
        String corpid = "##############";//替换成自己的corpid
        String secret = "##############";//替换成自己的corpsecret
        String accessToken = DingTalkService.getAccessToken(accessTokenUrl,corpid,secret);
        if(accessToken!=null){
            JSONArray jsonArray = DingTalkService.getCardList(accessToken,workDateFrom,workDateTo,offset,limit);
            System.out.println(jsonArray);
        }
    }
}
  • 25
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
获取钉钉Access Token,需要以下步骤: 1. 登录钉钉开放平台,进入“应用开发”页面,创建自己的应用。 2. 在创建的应用中,找到“应用信息”页面,记录下来自己的AppKey和AppSecret。 3. 在代码中使用HTTP请求获取Access Token,请求的URL为:https://oapi.dingtalk.com/gettoken?appkey=APPKEY&appsecret=APPSECRET,其中APPKEY和APPSECRET分别是自己记录下来的应用信息。 4. 解析返回的JSON数据,获取Access Token即可。 下面是Java代码示例: ``` java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class DingTalkAccessToken { public static void main(String[] args) throws Exception { String appKey = "your app key"; String appSecret = "your app secret"; String accessToken = getAccessToken(appKey, appSecret); System.out.println("Access Token: " + accessToken); } public static String getAccessToken(String appKey, String appSecret) throws Exception { String url = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 解析返回的JSON数据,获取Access Token String accessToken = response.toString().split("\"access_token\":\"")[1].split("\"")[0]; return accessToken; } } ``` 注意:以上代码是示例代码,需要替换成自己的AppKey和AppSecret才能正常使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值