钉钉接口:获取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);
        }
    }
}
posted @ 2018-08-20 17:02  GU天乐乐乐!  阅读(6866)  评论(2编辑  收藏  举报