java利用钉钉机器人向钉钉群推送消息

第一种方法:用官方的最新SDK方法,这种方法要先导入最新SDK的jar包。地址是:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
package star.moon;

//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;

import java.util.Arrays;

import com.dingtalk.;
import com.dingtalk.api.
;
import com.dingtalk.api.request.;
import com.dingtalk.api.response.
;
import com.taobao.api.ApiException;

public class TextMessage{
public void send() throws ApiException {
DingTalkClient client = new DefaultDingTalkClient(“https://oapi.dingtalk.com/robot/send?access_token=16bb489a2d173f419dc3d272a190a27a2ff7247e3e18a8a6378b50e585exxx”);
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype(“text”);
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent(“测试java文本消息”);
request.setText(text);
OapiRobotSendResponse response = client.execute(request);
System.out.print(response.toString());
}
public static void main (String[] srgs) throws ApiException{
new TextMessage().send();
}
}
第二种方法:不推荐,不太依赖官方包
package star.moon;

import com.alibaba.fastjson.JSON;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class SendHttps {
/**
* 发送POST请求,参数是Map, contentType=x-www-form-urlencoded
*
* @param url
* @param mapParam
* @return
*/
public static String sendPostByMap(String url, Map mapParam) {
Map 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 param, Map 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 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;
}

public void shouldAnswerWithTrue() {
// 钉钉的webhook
String dingDingToken=“https://oapi.dingtalk.com/robot/send?access_token=16bb489a2d173f419dc3d272a190a27a2ff7247e3e18a8a6378b50e585exxx”;
// 请求的JSON数据,这里我用map在工具类里转成json格式
Map json=new HashMap<>();
Map text=new HashMap<>();
json.put(“msgtype”,“text”);
text.put(“content”,“测试java向钉钉推送消息”);
json.put(“text”,text);
// 发送post请求
String response = SendHttps.sendPostByMap(dingDingToken, json);
System.out.println(“相应结果:”+response);
}
public static void main (String[] srgs){
new SendHttps().shouldAnswerWithTrue();
}
}
注意要先引入外部依赖包,alibaba.fastjson.jar,包的下载地址:https://dl.pconline.com.cn/download/1017127-1.html

你可能感兴趣的:(java)