简单粗暴:Java实现异常通知到手机钉钉

应用场景:当项目在运行时如发生异常,可实时在手机钉钉上查看。

如果您的项目是SpringBoot 可以配合 异常处理AOP。SpringBoot实现自定义注解处理异常 。实现异常后自动报警到钉钉。

第一步:获取钉钉的token 和 secret

首先登录钉钉PC,随便找一个群组,点击右上角···  --》点智能群助手--》点添加机器人--》添加机器人--》自定义--》添加

简单粗暴:Java实现异常通知到手机钉钉_第1张图片

随便取个名字,

简单粗暴:Java实现异常通知到手机钉钉_第2张图片

简单粗暴:Java实现异常通知到手机钉钉_第3张图片

至此 我们拿到了 以下数据

1.基础URL  :https://oapi.dingtalk.com/robot/send

2.token :8a902a73b480c9bd84903a67ebff8d13ec34b39c98f1aed17216(用上面拿到的,别用这个)

3.secret:SECaf0c1d14cb683f41dc7a87e7cd61468b9d1cc4502c(用上面拿到的,别用这个)

 

第二步:准备POST请求所需方法 或者其他HTTP POST 请求的工具类

//初始化客户端
OkHttpClient mClient ;
static {
        Builder builder = new Builder();
        builder.connectTimeout(10L, TimeUnit.SECONDS);
        builder.readTimeout(10L, TimeUnit.SECONDS);
        Dispatcher dispatcher = new Dispatcher();
        dispatcher.setMaxRequestsPerHost(200);
        dispatcher.setMaxRequests(200);
        builder.dispatcher(dispatcher);
        mClient = builder.build();
    }

//通用POST请求方法  依赖OKhttp3  
public static String postWithJson(String url, String jsonParams) {

        RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8");, jsonParams);
        Request request = (new Builder()).url(url).post(body).build();

        try {
            Response response = mClient.newCall(request).execute();
            if (response != null && response.body() != null) {
                return response.body().string();
            }
        } catch (IOException var5) {
            log.error("Exception:", var5);
        }

        return null;
    }

第三步:准备请求参数 - 请求参数方式是application/json  所以此处用了 fastjson (用字符串之类也行)

            JSONObject jsonObject = new JSONObject();
            //固定参数
            jsonObject.put("msgtype","text");

            JSONObject content = new JSONObject();
            //此处message是你想要发送到钉钉的信息

            content.put("content",message);
            jsonObject.put("text",content);

第四步:发送请求。


    String baseUrl = "https://oapi.dingtalk.com/robot/send?access_token=";

    String token ="token";

    String secret = "secret";


        try {

//  获取签名字符串
            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 = "×tamp="+timestamp+"&sign="+URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");



//发送
 postWithJson(baseUrl + token + sign , jsonObject.toJSONString());

        }catch (Exception e){
            e.printStackTrace();
        }

效果如下:

简单粗暴:Java实现异常通知到手机钉钉_第4张图片

 

你可能感兴趣的:(SpringBoot开发日记)