1 Maven依赖

        <!-- 阿里JSON解析器 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.76</version></dependency><!--hutool工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

2 Spring Boot配置

wechat:#企业Idcorpid: ww2d09828b5265f310#应用私钥corpsecret: gNHceiU7ePJjWdhJi_g-48fZ3SbPo8qTpUZMQs38su4#应用IDagentId: 1000002#获取token地址accessTokenUrl: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=CORPID&corpsecret=CORPSECRET#发送消息地址sendMessageUrl: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=#获取用户id地址getUseridUrl: https://qyapi.weixin.qq.com/cgi-bin/user/getuserid?access_token=#获取访问用户身份getUserInfoUrl: https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE#获取企业的jsapi_ticketgetJsapiTicketUrl: https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN#获取部门列表地址(企业微信api地址)getDepartmentListUrl: https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN#获取部门成员详情地址(企业微信api地址)getUserListUrl: https://qyapi.weixin.qq.com/cgi-bin/user/list

3 WeChatMessageService

企业微信消息推送实现类。

package com.message;import cn.hutool.core.util.StrUtil;
import cn.hutool.http.*;
import com.alibaba.fastjson.*;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.URL;
import java.util.*;/*** 企业微信消息推送实现类*/
@Data
@Component
public class WeChatMessageService {/*** 企业Id*/@Value("${wechat.corpid}")private String corpid;/*** 应用私钥*/@Value("${wechat.corpsecret}")private String corpsecret;/*** 获取访问权限码(access_token)URL  GET请求*/@Value("${wechat.accessTokenUrl}")private String accessTokenUrl;/*** 发送消息URL POST请求*/@Value("${wechat.sendMessageUrl}")private String sendMessageUrl;/*** 获取企业微信用户userid POST请求*/@Value("${wechat.getUseridUrl}")private String getUseridUrl;/*** token*/private String token;/*** 获取部门列表地址 get请求*/@Value("${wechat.getDepartmentListUrl}")private String getDepartmentListUrl;/*** 获取部门成员详情地址 get请求*/@Value("${wechat.getUserListUrl}")private String getUserListUrl;//应用ID@Value("${wechat.agentId}")private String agentId;public String getAccessToken() {//获取tokenString url = accessTokenUrl.replaceAll("CORPID", corpid).replaceAll("CORPSECRET", corpsecret);String result = HttpUtil.get(url);JSONObject jsonObject = JSONObject.parseObject(result);return jsonObject.getString("access_token");}/*** 根据电话号码获取userId** @param token* @param employeePhone* @return*/public String getUserId(String token, String employeePhone) {StringBuffer sb = new StringBuffer();sb.append("{");sb.append("\"mobile\":" + "\"" + employeePhone + "\"");sb.append("}");String json = sb.toString();String result = "";String url = getUseridUrl + token;try {HttpsURLConnection http = getPostHttp(url, "");OutputStream os = http.getOutputStream();os.write(json.getBytes("UTF-8"));InputStream is = http.getInputStream();int size = is.available();byte[] jsonBytes = new byte[size];is.read(jsonBytes);result = new String(jsonBytes, "UTF-8");os.flush();os.close();} catch (Exception e) {e.printStackTrace();}JSONObject jsonObject = JSONObject.parseObject(result);return jsonObject.getString("userid");}public static HttpsURLConnection getPostHttp(String action, String token) throws Exception {URL url = null;HttpsURLConnection http = null;try {url = new URL(action);http = (HttpsURLConnection) url.openConnection();http.setRequestMethod("POST");http.setRequestProperty("Content-Type", "application/json;charset=UTF-8");if (StrUtil.isNotBlank(token)) {http.setRequestProperty("token", token);}http.setDoOutput(true);http.setDoInput(true);//连接超时30秒System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//读取超时30秒System.setProperty("sun.net.client.defaultReadTimeout", "30000");http.connect();} catch (Exception e) {e.printStackTrace();}return http;}/*** 发送微信消息** @param token* @param json* @return*/public String sendMessage(String token, String json) {//请求链接String action = sendMessageUrl + token;try {return HttpRequest.post(action).body(json).execute().body();} catch (Exception e) {e.printStackTrace();return "";}}/*** 获取微信所有用户** @return*/public List<JSONObject> getWechatAllUser() {// 获取tokenString token = getAccessToken();String template = getUserListUrl + "?access_token={}&department_id=1&fetch_child=1";String str = StrUtil.format(template, token);String userResult = HttpUtil.get(str);JSONObject jsonUser = JSON.parseObject(userResult);// 返回结果List<JSONObject> resultJsonList = new ArrayList<>();if ("0".equals(jsonUser.getString("errcode"))) {String userListStr = jsonUser.getString("userlist");JSONArray userList = JSON.parseArray(userListStr);resultJsonList = JSONObject.parseArray(userList.toJSONString(userList.size()), JSONObject.class);return resultJsonList;} else {return resultJsonList;}}
}

4 调试代码

    /*** 发送文本消息** @return*/@GetMapping("/sendText")public String sendText() {//初始化tokenString token = weChatMessageService.getAccessToken();String phone = "15573967198";//得到userIdString userId = weChatMessageService.getUserId(token, phone);//构造消息体StringBuffer sb = new StringBuffer();String content = userId + ",你好";sb.append("{");sb.append("\"touser\":" + "\"" + userId + "\",");sb.append("\"msgtype\":" + "\"" + "text" + "\",");sb.append("\"agentid\":" + "\"" + weChatMessageService.getAgentId() + "\",");sb.append("\"text\":" + "{");sb.append("\"content\":" + "\"" + content + "\"},");sb.append("\"safe\":\"0\"");sb.append("}");//发送消息return weChatMessageService.sendMessage(token, sb.toString());}

5 调试结果

注:

企业微信进行消息推送的配置请查看以下博客。

企业微信 消息推送使用(新建应用、发送消息)https://blog.csdn.net/qq_38974638/article/details/113246970

Spring Boot 实现企业微信消息推送相关推荐

  1. spring boot 集成socketIo 做消息推送

    spring boot 集成socketIo 做消息推送 项目需求 代码展示 客户端代码 服务端代码 项目需求 后台管理系统用户小铃铛,消息推送功能并展示有多少条消息或者小红点 代码展示 客户端代码 ...

  2. Node-Red 实践:企业微信消息推送

    一个偶然的机会,认识了node-red.这种拖拽控件编写代码的方式给了我很深刻的印象.能够通过简单的拖拽实现mqtt,http,websocket,tcp的服务,作为基于网络的业务流程demon非常方 ...

  3. 企业微信消息推送接口大全

    该类存放接口所用到的企业微信的接口地址 package com.common;public final class QyapiUrl {/*** 请求nginx转发服务器地址*/public stat ...

  4. 企业微信消息推送卡片按钮互动的使用

    企业微信回调推送消息互动模板 前置条件 # 企业微信后台中设置了url 按以上设置 # 回调url: http://www.baidu.com# token: xxxxx# EncodingAESKe ...

  5. (二)企业微信消息推送

    1.所需信息 CorpID:企业ID AgentID:应用ID Secret:应用密钥 2.功能实现 参考内容:企业微信-发送应用消息 public static class QYWXHelper{/ ...

  6. 【corpwechat-bot】一个好用的企业微信消息推送python接口库

    文章目录 前言 Requirements Result Features Usage 前言 本文同步发表在blog.gentlecp.com corpwechat-bot是一个python封装的企业机 ...

  7. C# 企业微信消息推送对接,实现天气预报推送

    准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最下面企业id 获取应用secret 和  应用ID 发送微 ...

  8. 微信接收不到企业微信消息推送

    使用微信提供的接口,给公司微信企业号的相关人员推送消息时. 一般是微信端的企业号和企业微信都能接收到推送的消息,但有一次企业微信版本更新后发现微信端的推送消息没有接收到. 原因找了很久,最终发现在企业 ...

  9. 【Java开发】Java实现企业微信消息推送,通过应用发送

    企业微信机器人发送消息 一.可能需要的依赖 二.必须的信息 三.效果展示 四.具体代码 一.可能需要的依赖 之前导依赖的时候没有特别标记,现在分不清哪个是哪个了,应该就在这些里面 <depend ...

最新文章

  1. nrf51822蓝牙学习笔记之实例分析PPI和SHORT
  2. macOS下如何使用命令启动数据库/停止数据库/重启数据库(MySQL)
  3. 使用js实现换肤功能
  4. 非web项目并且项目文件多java项目 使用tomcat发布的方式
  5. 比较两种php调用Java对象的方法
  6. 怎么在eclipse中安装properties插件使其显示中文
  7. 华为交换机STP的配置实例
  8. python直接使用pyc_关于python包,模块,.pyc文件和文件导入理解
  9. C#二进制流的序列化和反序列化操作
  10. springmvc json串的null值替换为空值
  11. 参数模型 非参数模型 生成模型 判别模型
  12. 使用软件测试工具WinRunner的几点建议
  13. cocos2d-js 3.0 ios平台编译打包
  14. 和计算机相关的祝福语,祝福语精选
  15. Safari浏览器中工具栏的高度问题
  16. 动态iptables 防火墙
  17. 计算机硬件检测数据恢复理论知识,计算机硬件检测维与数据恢复赛项规程.doc...
  18. DO、DTO、VO、POJO使用场景
  19. 1176: 【入门】买蛋糕
  20. imvu为什么显示无法连接服务器,IMVU服务器错误怎么办 服务器无法连接解决办法...

热门文章

  1. 战神4 幕后花絮 概念艺术_幕后花絮介绍了锻炼技巧,以提高编码技能
  2. 图的深度遍历 (邻接矩阵)
  3. 在github上搭建个人博客
  4. 引用Math.h编译sin、cos时无法通过【待续】
  5. android壁纸app推荐,安卓壁纸app哪个好 安卓壁纸app排行榜前十名
  6. Kubernetes一键部署利器:kubeadm
  7. Android性能专项测试之Heap Viewer工具
  8. 2022-2028全球与中国在线服装租赁市场现状及未来发展趋势
  9. UpdatePanel 用法
  10. 安卓导入项目错误的解决