栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

钉钉机器人加密消息发送

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

钉钉机器人加密消息发送

钉钉消息发送测试类

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.joolun.cloud.weixin.common.util.HttpUtil;
import org.apache.commons.codec.binary.Base64;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

    public class DingDingSpiderUtil {
        public static void main(String[] args) {
            sendMsg("ceshi,", Arrays.asList("130000000"));
        }
    public static   boolean sendMsg(String content, List mobileList) {
        try {
            String dingUrl = getSign() ;
            boolean isAtAll = true;
            String reqStr = buildReqStr(content, mobileList);
            String result = HttpUtil.postJson(dingUrl, reqStr);
            System.out.println("result == " + result);
            JSONObject obj = JSONObject.parseObject(result);
            Integer errcode = obj.getInteger("errcode");
            return "ok".equals(obj.getString("errmsg"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

        public static String  getSign(){
            try {
                String url= "https://oapi.dingtalk.com/robot/send?access_token=XXX";
                String secret="SECXXX";
                Long timestamp = System.currentTimeMillis();
                String stringToSign = timestamp + "n" + secret;
                Mac mac = Mac.getInstance("HmacSHA256");
                mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
                byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
                String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
                return url+"×tamp="+timestamp+"&sign="+sign;
            }catch (Exception e){
                return "";
            }
        }
    private static String buildReqStr(String content, List mobileList) {
        Map contentMap = Maps.newHashMap();
        contentMap.put("content", content);
        Map atMap = Maps.newHashMap();
    //1.是否通知所有人
        atMap.put("isAtAll", true);
        //2.通知具体人的手机号码列表
        atMap.put("atMobiles", mobileList);
        Map reqMap = Maps.newHashMap();
        reqMap.put("msgtype", "text");
        reqMap.put("text", contentMap);
        reqMap.put("at", atMap);
        return JSON.toJSONString(reqMap);
    }
}

HTTP测试类

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public static String postJson(String url, String body) {
    CloseableHttpClient httpClient = createCustomClient();
    CloseableHttpResponse response = null;
    String resultString = null;
    try {
        // 创建Http Post请求
        HttpPost httpPost = new HttpPost(url);
        httpPost.addHeader("Content-Type", "application/json");

        if (body != null) {
            httpPost.setEntity(new StringEntity(body, "utf-8"));
        }
        // 执行http请求
        response = httpClient.execute(httpPost);
        resultString = EntityUtils.toString(response.getEntity(), "utf-8");
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (response != null) {
                response.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    return resultString;
}

public static CloseableHttpClient createCustomClient() {
    RequestConfig defaultRequestConfig = RequestConfig.custom()
            .setSocketTimeout(120 * 1000)
            .setConnectTimeout(120 * 1000)
            .setConnectionRequestTimeout(120 * 1000)
            .setStaleConnectionCheckEnabled(true)
            .build();

    return HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号