文章目录
前言
企业微信开放了消息发送接口,企业可以使用这些接口让自定义应用与企业微信后台或用户间进行双向通信。
一、登录企业微信后台管理创建应用
1. 登录企业微信后台管理页面,在应用管理里,创建一个应用,我自己是创建了一个“测试通知”的应用。
2.粘贴自己创建的 应用的 这两个信息 AgentId Secret ,留着有用
3.设置接受消息的服务器配置信息
url :用来响应企业的微信验证URL的请求 (如果已经有地址,直接填,
没有的可以参考 第一篇文章 (Java设置接收企业微信消息服务器URL) Java设置接收企业微信消息服务器URL-CSDN博客)
token 和 EncodingAESKey 都可以点随机获取
二、参考企业微信开发者api测试获取token和发送消息
https://developer.work.weixin.qq.com/document/path/90236
1.获取token
private static final String CORP_ID = "XXXXXXXX";//企业id
private static final String CORP_SECRET = "XXXXXXXX";//密钥 建应用时 Secret
private static String getAccessToken() throws IOException {
String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + CORP_ID + "&corpsecret=" + CORP_SECRET;
HttpPost httpPost = new HttpPost(url);
try (CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(httpPost)) {
HttpEntity entity = response.getEntity();
String responseBody = EntityUtils.toString(entity);
JSONObject jsonObject = JSON.parseObject(responseBody);
return jsonObject.getString("access_token");
}
}
//测试类获取token
public static void main(String[] args) {
try {
// 获取access_token
String accessToken = getAccessToken();
System.out.println("accessToken===: " + accessToken);
}
}
2.发送消息
代码如下(示例):
private static final String CORP_ID = "XXXXX";//企业id
private static final String CORP_SECRET = "XXXXX";//密钥
private static final String USER_ID = "XXXXX";//目标用户ID
private static final String MESSAGE = "Hello, 这是一个测试消息";
private static final String AGENT_ID = "XXXXX";
//发送消息的方法
private static void sendMessage(String accessToken, String messageContent) throws IOException {
log.info("Message sentContent: " + messageContent);
String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + accessToken;
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new StringEntity(messageContent,"utf-8"));
httpPost.setHeader("Content-Type", "application/json");
try (CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(httpPost)) {
HttpEntity entity = response.getEntity();
String responseBody = EntityUtils.toString(entity);
log.info("Message sent: " + responseBody);
//System.out.println("Message sent: " + responseBody);
}
}
//测试发送
public static void main(String[] args) {
try {
// 获取access_token
String accessToken = getAccessToken();
System.out.println("accessToken===: " + accessToken);
// 构建消息内容
JSONObject messageContent = new JSONObject();
messageContent.put("touser", USER_ID);//touser 指定接收消息的成员,成员ID列表(多个接收者用‘|’分隔,最多支持1000个)。 特殊情况:指定为"@all",则向该企业应用的全部成员发送
messageContent.put("agentid", AGENT_ID);//AgentId
messageContent.put("msgtype", "text");//msgtype 消息类型
JSONObject textContent = new JSONObject();
textContent.put("content", new String(MESSAGE.getBytes(),"UTF-8"));
messageContent.put("text", textContent);//text 发送内容
// 发送消息
sendMessage(accessToken, messageContent.toJSONString());
} catch (IOException e) {
e.printStackTrace();
}
}
3.错误码
上面方法如果返回errcode
https://developer.work.weixin.qq.com/devtool/query?e=40001
去官方查原因
登录 - 企业微信开发者中心https://developer.work.weixin.qq.com/devtool/query?e=40001