zoukankan      html  css  js  c++  java
  • 钉钉机器人

      最近写了个小工具,目的是能够通过运行程序,能够让钉钉群里面的机器人发送一条内容,内容的是一条来自查询数据库生成的数据.

      很简单的功能,三个步骤,

      第一步,通过jdbc建立数据库连接,拿到结果集.

      第二步,处理结果集,将数据类型转换成String.

      第三部,将String,通过机器人发送出去.

      代码大致如下:

      

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.io.IOException;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    //以上是要用到的jar包
    
    //查询工具类
    public class FarmHouseReport {
    	public static String getFarmHouseReport() throws Exception {
    		com.mysql.jdbc.Driver driverOne=new com.mysql.jdbc.Driver();
    		 DriverManager.registerDriver(driverOne);
    		 //连接的三个参数,建立连接
    		 String url="JDBC:Mysql://数据库地址/数据库名称";
    		 String name="用户名";
    		 String password="密码";
    		 Connection conn=DriverManager.getConnection(url,name,password);
    		//建立sql信使:
    		 Statement st=(Statement) conn.createStatement();
    		 String sql="SELECT b.name,c.dep_name,DATE_FORMAT(a.create_time, '%Y-%m-%d'),count(a.id) "
    		 		+ "FROM farmhouse_house a,user b,departmant c "
    		 		+ "WHERE DATE_FORMAT(a.create_time, '%Y-%m-%d') = DATE_SUB(curdate(), INTERVAL 1 DAY) "
    		 		+ "AND a.user_id = b.id AND b.department_id = c.id "
    		 		+ "GROUP BY b.name,c.dep_name,DATE_FORMAT(a.create_time, '%Y-%m-%d') "
    		 		+ "ORDER BY c.dep_name;";
    
    		//resultset用来接收查询
    		 ResultSet rs = st.executeQuery(sql);
    		 
    		 //声明为全局
    		ArrayList<InforEntity> arr = new ArrayList<InforEntity>();
    		 
    		 while(rs.next())
    			{	
    			 InforEntity info = new InforEntity();
    			 info.setName(rs.getString(1));
    			 info.setDepName(rs.getString(2));
    			 info.setDate(rs.getString(3));
    			 info.setCount(rs.getString(4));
    			 arr.add(info);
    			}
    		
    		//构建要发送的内容
    		 StringBuffer stb = new StringBuffer();
    		 //遍历集合
    		 for (InforEntity info : arr) {
    			stb.append(info.name);
    			stb.append(" ");
    			stb.append(info.depName);
    			stb.append(" ");
    			stb.append(info.date);
    			stb.append(" ");
    			stb.append(info.count);
    			stb.append("
    ");
    		}
    		 String str = stb.toString();
    		System.out.println(str);
    		return str ;
    	}
    }
    

      然后是发送类

    public class sendUtils {
    	// TOKEN为需要发送机器人的地址
    	public static void send(String TOKEN,String stb) throws IOException, ClientProtocolException {
    		HttpClient httpclient = HttpClients.createDefault();
    
            HttpPost httppost = new HttpPost(TOKEN);
            httppost.addHeader("Content-Type", "application/json; charset=utf-8");
    
            String textMsg = "{ "msgtype": "text", "text": {"content": "+"""+stb+"""+"}}";
            StringEntity se = new StringEntity(textMsg, "utf-8");
            httppost.setEntity(se);
    
            HttpResponse response = httpclient.execute(httppost);
            if (response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){
                String result= EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println(result);
            }
    	}
    }
    

      

  • 相关阅读:
    TinyOS在ubuntu 14.04下安装教程
    C++ STL标准入门
    C++ 模板
    多态
    C++继承
    C++类型转换 -- 由其他类型转换到自定义类型
    运算符重载
    友元
    typedef用法
    c++细节--section1
  • 原文地址:https://www.cnblogs.com/Mr-Brown/p/9856311.html
Copyright © 2011-2022 走看看