JAVA-企业微信报警工具类
企业微信报警工具类,可用于项目内告警信息通知。
import com.alibaba.fastjson2.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSocketFactory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.*;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;/*** 企业微信报警工具类* 文档地址:https://developer.work.weixin.qq.com/document/path/91770** @author hou.xy*/
public class WxWorkAlarmUtil {private static final Logger logger = LoggerFactory.getLogger(WxWorkAlarmUtil.class);/*** 发送http请求** @param reqMsg 请求报文* @param robotUrl 机器人地址(企业微信群右上角更多菜单中添加群机器人所生成的地址)* @param isProxy 是否开启代理* @param ip 代理IP* @param port 代理端口* @throws Exception*/public static void postAlarm(String reqMsg, String robotUrl, boolean isProxy, String ip, Integer port) throws Exception {logger.info("发送企业微信请求报文:" + reqMsg);StringBuilder resMsg = new StringBuilder();HttpsURLConnection httpsUrlConnection = null;OutputStream outStr = null;BufferedReader in = null;SSLSocketFactory ssf = BZX509TrustManager.getSSFactory();try {URL url = new URL(robotUrl);//代理模式if (isProxy) {Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ip, port));httpsUrlConnection = (HttpsURLConnection) url.openConnection(proxy);} else {//非代理模式httpsUrlConnection = (HttpsURLConnection) url.openConnection();}httpsUrlConnection.setSSLSocketFactory(ssf);httpsUrlConnection.setRequestProperty("accept", "*/*");httpsUrlConnection.setRequestProperty("connection", "Keep-Alive");httpsUrlConnection.setRequestProperty("Content-type", "application/json");httpsUrlConnection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");httpsUrlConnection.setDoOutput(true);httpsUrlConnection.setDoInput(true);httpsUrlConnection.setUseCaches(false);httpsUrlConnection.setRequestMethod("POST");httpsUrlConnection.setConnectTimeout(60000);httpsUrlConnection.connect();//发送请求outStr = httpsUrlConnection.getOutputStream();HashMap<String, Object> msgHead = new HashMap(16);msgHead.put("msgtype", "markdown");HashMap<String, Object> msg = new HashMap(16);msg.put("content", reqMsg);msgHead.put("markdown", msg);outStr.write(JSON.toJSONString(msgHead).getBytes(StandardCharsets.UTF_8));outStr.flush();outStr.close();in = new BufferedReader(new InputStreamReader(httpsUrlConnection.getInputStream(), StandardCharsets.UTF_8));String line;while ((line = in.readLine()) != null) {resMsg.append(line);}logger.info("接收企业微信应答报文:" + resMsg);} catch (SocketTimeoutException e) {logger.info("", e);throw new Exception("读取回执超时", e);} catch (ConnectException ce) {logger.info("", ce);throw new Exception("连接失败 请检查http服务端是否开启", ce);} catch (Exception e) {logger.info("", e);throw new Exception("已连接到服务器,但接收应答出现异常", e);} finally {//关闭流及连接if (outStr != null) {outStr.close();}if (in != null) {in.close();}if (httpsUrlConnection != null) {httpsUrlConnection.disconnect();}}}}
JAVA-企业微信报警工具类相关推荐
- java企业微信消息发送工具类
java企业微信消息发送工具类 用途 基于java实现调用企业微信发送消息,文件,图片. 实现效果 文件列表 文件名 用途 WechatUtil.java 企业微信工具类 WechatTest.jav ...
- Java企业微信会话存档开发(从跳坑到爬坑)
Java企业微信会话存档开发(从跳坑到爬坑) 本文仅作为方便首次开发企业微信使用 文章目录 Java企业微信会话存档开发(从跳坑到爬坑) 前言 一.开发准备 1.企业微信后台配置 2.sdk下载 3. ...
- JAVA I/O流工具类TextFile
JAVA I/O流工具类TextFile由广州疯狂软件java培训分享: 本文是一个TextFile类,通过这个类我们可以调用其中的方法来简化对文件的读写,这段代码的可用性比较强.这个TextFile ...
- java项目常用的工具类
前言 在开发过程中,我们会遇到很多繁琐或者棘手的问题,但是,这些问题往往会存在一些便捷的工具类,来简化我们的开发,下面是我工作中经常使用到的工具类 常用工具类 日期工具类 import java.te ...
- 【Java 代码实例 13】Java操作pdf的工具类itext
目录 一.什么是iText? 二.引入jar 1.项目要使用iText,必须引入jar包 2.输出中文,还要引入下面```itext-asian.jar```包 3.设置pdf文件密码,还要引入下面` ...
- java图片缩放工具类,一个JAVA图形缩放处置工具类
一个JAVA图形缩放处理工具类 调用的例子 import java.io.FileOutputStream; import java.io.IOException; import javax.imag ...
- java redis remove_最全的Java操作Redis的工具类
RedisUtil 当前版本:1.1 增加更全的方法,对以前的部分方法进行了规范命名,请放心替换成新版本. 介绍 最全的Java操作Redis的工具类,使用StringRedisTemplate实现, ...
- java图形验证码生成工具类
转载自 java图形验证码生成工具类 生成验证码效果 ValidateCode.java 验证码生成类 package cn.dsna.util.images; import java ...
- java 代理ip工具类_Java基础之java处理ip的工具类
java处理ip的工具类,包括把long类型的Ip转为一般Ip类型.把xx.xx.xx.xx类型的转为long类型.根据掩码位获取掩码.根据 ip/掩码位 计算IP段的起始IP.根据 ip/掩码位 计 ...
最新文章
- 视觉SLAM中PNP求解
- 发现一个有意思的博主(科研工作者)
- python requests的作用_Python爬虫第一课:requests的使用
- (chap2 TCP/IP基础知识) TCP/IP协议分层模型-应用层
- 老粮商谋定国际农民丰收节贸易会·万祥军:巨头跨国不上市
- 数据结构——字符串(未完)
- wxWidgets:wxIntProperty类用法
- SpringBoot2.X (2)- 使用Spring Initializer 快速创建项目
- zabbix3.4配置钉钉机器人报警
- java equals 字符串_Java String 字符串 比较 == equals
- Android 8 AudioPolicy 分析
- oracle mysql收费_oracle 数据库收费标准
- Tasking编译器开发TC275(Tricore)中使用自定义段
- 飞桨PaddlePaddle 英特尔神经计算棒 联合优化AI算法CPU部署性能,推动产业低成本智能化升级
- gocv拆分颜色通道
- 华为无线路由器信道怎么测试软件,路由器无线信道是什么怎么设置
- Android开发者跳槽必备:连续四年百度Android岗必问面试题!讲的明明白白!
- AndroidIOS APP启动速度专项测试方法
- MyBatis-plus从入门到精通(全)
- 华为和荣耀学编程计算机推荐,2020~2021笔记本电脑推荐(华为篇)