钉钉消息发送测试类
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.joolun.cloud.weixin.common.util.HttpUtil;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class DingDingSpiderUtil {
public static void main(String[] args) {
sendMsg("ceshi,", Arrays.asList("130000000"));
}
public static boolean sendMsg(String content, List mobileList) {
try {
String dingUrl = getSign() ;
boolean isAtAll = true;
String reqStr = buildReqStr(content, mobileList);
String result = HttpUtil.postJson(dingUrl, reqStr);
System.out.println("result == " + result);
JSONObject obj = JSONObject.parseObject(result);
Integer errcode = obj.getInteger("errcode");
return "ok".equals(obj.getString("errmsg"));
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static String getSign(){
try {
String url= "https://oapi.dingtalk.com/robot/send?access_token=XXX";
String secret="SECXXX";
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 = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
return url+"×tamp="+timestamp+"&sign="+sign;
}catch (Exception e){
return "";
}
}
private static String buildReqStr(String content, List mobileList) {
Map contentMap = Maps.newHashMap();
contentMap.put("content", content);
Map atMap = Maps.newHashMap();
//1.是否通知所有人
atMap.put("isAtAll", true);
//2.通知具体人的手机号码列表
atMap.put("atMobiles", mobileList);
Map reqMap = Maps.newHashMap();
reqMap.put("msgtype", "text");
reqMap.put("text", contentMap);
reqMap.put("at", atMap);
return JSON.toJSONString(reqMap);
}
}
HTTP测试类
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils;
public static String postJson(String url, String body) {
CloseableHttpClient httpClient = createCustomClient();
CloseableHttpResponse response = null;
String resultString = null;
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json");
if (body != null) {
httpPost.setEntity(new StringEntity(body, "utf-8"));
}
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return resultString;
}
public static CloseableHttpClient createCustomClient() {
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setSocketTimeout(120 * 1000)
.setConnectTimeout(120 * 1000)
.setConnectionRequestTimeout(120 * 1000)
.setStaleConnectionCheckEnabled(true)
.build();
return HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
}


