zoukankan      html  css  js  c++  java
  • java利用钉钉机器人向钉钉群推送消息

    第一步、登录钉钉电脑版,获得钉钉机器人的webhook;

    第二步,用java发送post请求给钉钉完成消息推送

    package com.thinkgem.wlw.modules.lhjh.DingTalk;
    
    import com.alibaba.fastjson.JSON;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    /**
     * @Author: zhouhe
     * @Date: 2019/6/20 14:49
     */
    public class SendHttps {
        private static Logger logger = LoggerFactory.getLogger(SendHttps.class);
        /**
         * 发送POST请求,参数是Map, contentType=x-www-form-urlencoded
         *
         * @param url
         * @param mapParam
         * @return
         */
        public static String sendPostByMap(String url, Map<String, Object> mapParam) {
            Map<String, String> headParam = new HashMap();
            headParam.put("Content-type", "application/json;charset=UTF-8");
            return sendPost(url, mapParam, headParam);
        }
    
        /**
         * 向指定 URL 发送POST方法的请求
         *
         * @param url   发送请求的 URL
         * @param param 请求参数,
         * @return 所代表远程资源的响应结果
         */
        public static String sendPost(String url, Map<String, Object> param, Map<String, String> headParam) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性 请求头
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent",
                        "Fiddler");
    
                if (headParam != null) {
                    for (Entry<String, String> entry : headParam.entrySet()) {
                        conn.setRequestProperty(entry.getKey(), entry.getValue());
                    }
                }
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                // 发送请求参数
                out.print(JSON.toJSONString(param));
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                logger.info("发送 POST 请求出现异常!" + e);
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            return result;
        }
    }

    第三步,编写测试类

    package com.thinkgem.wlw.modules.lhjh.DingTalk;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @Author: zhouhe
     * @Date: 2019/6/20 14:52
     */
    public class SendMessage {
        public static void main(String[] args){
    
            // 钉钉的webhook
            String dingDingToken="https://oapi.dingtalk.com/robot/send?access_token=0f0daca33m98gn78f00189fe1e1e908b81fa26d0d8ddd48fa78a844cd8636187";
            // 请求的JSON数据,这里我用map在工具类里转成json格式
            Map<String,Object> json=new HashMap();
            Map<String,Object> text=new HashMap();
            json.put("msgtype","text");
            text.put("content","临涣焦化:VOCs排放浓度大于上限:61.89");
            json.put("text",text);
            // 发送post请求
            String response = SendHttps.sendPostByMap(dingDingToken, json);
            System.out.println("相应结果:"+response);
    
        }
    }

    测试结果如下:

     

  • 相关阅读:
    docker 安装mysql
    Java web项目搭建系列之二 Jetty下运行项目
    Java web项目搭建系列之一 Eclipse中新建Maven项目
    Maven 添加其他Maven组件配置问题
    C# 中定义扩展方法
    Oracle 函数
    【Webservice】2 counts of IllegalAnnotationExceptions Two classes have the same XML type name
    Linux精简版系统安装网络配置问题解决
    Rsync 故障排查整理
    Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
  • 原文地址:https://www.cnblogs.com/zhouheblog/p/11058817.html
Copyright © 2011-2022 走看看