钉钉的消息会话支持多种格式:包括文本、图片、链接......,这里说一下当你想创建一个链接消息时,多个参数的传递问题。
首先写一个发送消息的方法,然后在main方法里面测试调用。一定要对url先进行编码URLEncoder.encode(messageUrl, "utf-8"),要不然传参只能传一个,后面的都解析不出来
public static boolean sendLinkMsg(final String msg, final String linkTitle,
final String messageUrl, final List<String> userNameList)
throws UnsupportedEncodingException {
if (StringUtils.isNotEmpty(msg) && StringUtils.isNotEmpty(linkTitle)
&& StringUtils.isNotEmpty(messageUrl) && userNameList != null) {
String agentId = PropertiesUtil.getProperties("agentID", "*");
String msgUrl = PropertiesUtil.getProperties("linkMsgUrl",
"https://*******");
String userNames = "发送给钉钉用户的姓名";
String mapStr = "msg=" + msg + "&accountlist=" + userNames
+ "&agentID=" + agentId
+ "&msgtype=link&link_title="
// 重点就在URLEncoder.encode 要不然你在url里面用&拼接的参数全都传不过去
+ linkTitle + "&message_url="
+ URLEncoder.encode(messageUrl, "utf-8") + "&random="
+ new Random().nextInt();
HttpUtils.post(msgUrl, mapStr);
}
return true;
}
重点就在URLEncoder.encode 要不然你在url里面用&拼接的参数全都传不过去
+ linkTitle + "&message_url="
+ URLEncoder.encode(messageUrl, "utf-8") + "&random="
+ new Random().nextInt();
HttpUtils.post(msgUrl, mapStr);
}
return true;
}
man方法测试,一定要对url先进行编码,要不然传参只能传一个,后面的都解析不出来
public static void main(String[] args) {
List<String> userNameList = new ArrayList<String>();
userNameList.add("钉钉用户");
String msg = "消息内容";
String linkTitle = "消息标题";
String messageUrl = "https://xxxController_test.do?test1=test1&test2=test2";
try {
sendLinkMsg(msg, linkTitle, messageUrl, userNameList);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}