應用場景:當項目在運行時如發生異常,可實時在手機釘釘上查看。
如果您的項目是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 = "×tamp="+timestamp+"&sign="+URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
//發送
postWithJson(baseUrl + token + sign , jsonObject.toJSONString());
}catch (Exception e){
e.printStackTrace();
}
效果如下: