簡單粗暴:Java實現異常通知到手機釘釘

應用場景:當項目在運行時如發生異常,可實時在手機釘釘上查看。

如果您的項目是SpringBoot 可以配合 異常處理AOP。SpringBoot實現自定義註解處理異常 。實現異常後自動報警到釘釘。

第一步:獲取釘釘的token 和 secret

首先登錄釘釘PC,隨便找一個羣組,點擊右上角···  --》點智能羣助手--》點添加機器人--》添加機器人--》自定義--》添加

隨便取個名字,

至此 我們拿到了 以下數據

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 = "&timestamp="+timestamp+"&sign="+URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");



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

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

效果如下:

 

發佈了13 篇原創文章 · 獲贊 10 · 訪問量 8204
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章