平时我们老是在网上看到使用python操作微信发送消息,这种功能java能不能实现呢,答案是可以的,这里我借助飞鸽快信实现一下。想了解飞鸽快信更多请访问官网。

1.访问飞鸽快信:https://u.ifeige.cn/login
使用微信扫码登录,并关注飞鸽快信的微信公众号:

2.添加一个群组,添加一下人员:



3.查看一下密匙:

注意:在编码中,用到最多的就是密匙SECRET KEY群组app_key

4.看一下使用说明和接口文档:

5.开始编码操作:

添加依赖:

 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.12</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.9</version></dependency>

代码实现:

/*** @author jinghuaixin* @date 2020/05/13*/
public class FeiGeSendMessgeToWeChart {private static final String SECRET_KEY = "xxxxxxxxxxxxxxxxxxx"; // 使用你自己的密匙SECRET_KEYprivate static final String APP_KEY = "yyyyyyyyyyyyyyyyyyy"; // 使用你自己的群组APP_KEYpublic static void main(String[] args) throws Exception {// 获取用户列表List<User> userList = getUserList();// 添加用户到群组中for (int i = 0, len = userList.size(); i < len; i++) {System.out.println(addUser(userList.get(i)));}// 发送消息测试sendMessageTest();// 删除用户测试:for (int i = 0, len = userList.size(); i < len; i++) {System.out.println(deleteUser(userList.get(i)));}}/*** 执行请求的公共方法* * @param url 请求url* @param paramMap 参数map* @return* @throws Exception*/public static String doExecuteRequest(String url, Map<String, String> paramMap) throws Exception {String result = "";// 创建一个HttpClientHttpClient httpclient = HttpClients.createDefault();// 创建一个POST请求对象HttpPost httpPost = new HttpPost(url);if (paramMap != null && !paramMap.isEmpty()) {// 添加参数列表List<NameValuePair> paramList = new ArrayList<>();for (Map.Entry<String, String> entry : paramMap.entrySet()) {paramList.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}// 将参数封装成一个实体类UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(paramList, "UTF-8");// 给POST请求添加参数httpPost.setEntity(urlEncodedFormEntity);}// 设置请求的报文头部的编码httpPost.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));// 设置期望服务端返回的编码httpPost.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8"));// 执行POST请求HttpResponse response = httpclient.execute(httpPost);// 判断请求响应是否成功int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {result = EntityUtils.toString(response.getEntity(), "UTF-8");System.out.println(result);} else {System.out.println("请求响应失败,响应代码:" + statusCode);}return result;}/*** 发送消息测试* @throws Exception*/public static void sendMessageTest() throws Exception {// 创建一个HttpClientHttpClient httpclient = HttpClients.createDefault();// 创建一个POST请求对象HttpPost httpPost = new HttpPost("https://u.ifeige.cn/api/message/send");// 添加参数列表List<NameValuePair> paramList = new ArrayList<>();paramList.add(new BasicNameValuePair("secret", SECRET_KEY));paramList.add(new BasicNameValuePair("app_key", APP_KEY));// 模板名称:待处理通知 的模板idparamList.add(new BasicNameValuePair("template_id", "5uZIvSm5GAdUR1X25HNpjuOp6jSiL88v4opn4a4GLa0"));paramList.add(new BasicNameValuePair("data", "{" + "    \"first\": {" + "        \"value\": \"待处理通知\"," + "        \"color\": \"#173177\"" + "    }," + "    \"keyword1\": {" + "        \"value\": \"放假咯\"," + "        \"color\": \"#173177\"" + "    }," + "    \"keyword2\": {" + "        \"value\": \"jinghx\"," + "        \"color\": \"#173177\"" + "    }," + "    \"keyword3\": {" + "        \"value\": \""+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"\"," + "        \"color\": \"#173177\"" + "    }," + "    \"remark\": {" + "        \"value\": \"这条通知是假的\"," + "        \"color\": \"#173177\"" + "    }" + "}"));paramList.add(new BasicNameValuePair("url", "https://www.baidu.com"));// 指定了uid可以只进行单条信息发送// paramList.add(new BasicNameValuePair("uid", "4635"));// 将参数封装成一个实体类UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(paramList, "UTF-8");// 给POST请求添加参数httpPost.setEntity(urlEncodedFormEntity);// 设置请求的报文头部的编码httpPost.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));// 设置期望服务端返回的编码httpPost.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8"));// 执行POST请求HttpResponse response = httpclient.execute(httpPost);// 判断请求响应是否成功int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {String content = EntityUtils.toString(response.getEntity(), "UTF-8");System.out.println(content);} else {System.out.println("请求响应失败,响应代码:" + statusCode);}}/*** 获取关注的用户列表* * @param secret* @return* @throws Exception*/public static List<User> getUserList() throws Exception {List<User> userList = null;String result = doExecuteRequest("https://u.ifeige.cn/api/userlist", new HashMap<String, String>() {private static final long serialVersionUID = 1L;{put("secret", SECRET_KEY);}});System.out.println(result);if (StringUtils.isNotBlank(result)) {JSONObject json = JSON.parseObject(result);int count = Integer.parseInt(json.getString("count"));System.out.println("用户个数:" + count);if (count > 0) {userList = new ArrayList<>();JSONArray jsonArray = JSON.parseArray(json.getString("list"));User user = null;for (int i = 0; i < count; i++) {/*userList = new ArrayList<>();JSONArray jsonArray = JSON.parseArray(json.getString("list"));User user = null;for (int i = 0; i < count; i++) {user = new User();user.setId(jsonArray.getJSONObject(i).getString("id"));user.setName(jsonArray.getJSONObject(i).getString("name"));user.setRemark(jsonArray.getJSONObject(i).getString("remark"));userList.add(user);}*/userList = JSON.parseArray(json.getString("list"), User.class);}}}return userList;}/*** 添加用户* * @return*/public static int addUser(User u) throws Exception {int code = 0;String result = doExecuteRequest("https://u.ifeige.cn/api/group_adduser", new HashMap<String, String>() {private static final long serialVersionUID = 1L;{put("secret", SECRET_KEY);put("token", APP_KEY);put("uid", u.getId());}});if (StringUtils.isNotBlank(result)) {code = Integer.parseInt(JSON.parseObject(result).getString("code"));}return code;}/*** 删除用户测试* * @param u* @return* @throws Exception*/public static int deleteUser(User u) throws Exception {int code = 0;String result = doExecuteRequest("https://u.ifeige.cn/api/group_deleteuser", new HashMap<String, String>() {private static final long serialVersionUID = 1L;{put("secret", SECRET_KEY);put("token", APP_KEY);put("uid", u.getId());}});if (StringUtils.isNotBlank(result)) {code = Integer.parseInt(JSON.parseObject(result).getString("code"));}return code;}
}
/*** 用户信息* @author jinghuaixin* @date 2020/05/13*/
class User {private String id;private String name;private String remark;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", remark=" + remark + "]";}}

其实编码比较简单,按照接口说明里面的url请求和传递参数就可以了,下面贴一张接口的说明:


在群里列表点击发消息,会跳转到模板页面,模板ID就是template_id参数的值,点击使用说明或者测试,可以看到具体的参数格式:

这样,运行程序,你就可以接收到微信消息了:

在管理中心里面,你可以看到自己的二维码,当别人扫描二维码以后,你可以把他添加到指定群组下,这样他也能接收到你的消息了,当然了你可以写一个定时任务,定时扫描人员列表然后添加到指定群组下面,这样就省事多了,是不是很简单呢。

java编程实现给微信发送消息相关推荐

  1. java 给微信发消息_(新版)通过java程序,给微信发送消息

    之前写过一篇使用飞鸽快信给自己的微信发送消息的示例.https://blog.csdn.net/xcxzzx01/article/details/80461086 两年多过去了,飞鸽快信已改名捷易快信 ...

  2. java代码控制qq、微信发送消息

    对于程序QQ.微信的程序控制,本人并不是直操纵他官方提供的接口,而且直接借用github大佬开发的第三方辅助程序,开放出来接口供java代码调用,实现java代码控制qq.微信发消息的功能. 一.代码 ...

  3. 使用Python实现给企业微信发送消息功能

    本文将介绍如何使用python3给企业微信发送消息,文中有详细的图文解说及代码示例,对正在学习python的小伙伴很有帮助,需要的朋友可以参考下.编程资料点击领取 目录 一.概述 二.python脚本 ...

  4. linux 脚本调用企业微信_shell或python调用企业微信发送消息(实现报警功能)

    shell或python调用企业微信发送消息(实现报警功能) 官方文档 注册登陆企业微信 登录企业微信管理端 -> 应用与小程序 -> 应用 -> 自建,点击"创建应用&q ...

  5. 微信IOT模块 用户手册(串口向微信发送消息,串口与微信通讯)

    微信IOT模块 用户手册 微信IOT模块 以下简称[模块] 由 广州互联智控科技有限公司 出品. #简介 设备通过串口连接[模块],直接向手机微信发送消息.点击微信消息进入设备控制界面,通过控制界面实 ...

  6. 串口to微信IOT模块,串口直接向微信发送消息与微信通讯,开发板物联网

    微信IOT模块 简介 微信IOT模块 以下简称[模块] 由 广州互联智控科技有限公司 出品. 功能 设备通过串口/网口UDP连接[模块],直接向手机微信发送消息.点击微信消息进入设备控制界面,通过控制 ...

  7. 企业微信发送消息--Python

    企业微信内部消息推送--Python 我有一些自动化任务,这些自动化任务的执行结果,是成功和失败都是通过邮件发送的.但是邮件这个工具,有点正式,毕竟我只想一个通知.那有没有方法可以用微信接受通知呢? ...

  8. SQL Server 使用企业微信发送消息

    SQL Server使用企业微信发送消息 要推送企业微信消息需要使用WebAPI方式调用下面两个方法: 1.获取Token 请求方式: GET(HTTPS) 请求地址: https://qyapi.w ...

  9. 使用python+微信发送消息提醒,实现程序监控

    使用python+微信发送消息提醒,实现程序监控 使用python+微信可以非常方便的提醒自己运行的程序是否报错,监控程序运行状态 1.申请微信测试号 https://mp.weixin.qq.com ...

最新文章

  1. 有关 drop delete truncate 问题
  2. CentOS7系统启动、排错、修复、破解root口令
  3. 计算机网络智能化在铁路通信的发展,计算机网络在铁路信号中的应用
  4. 用Python机器学习搞定验证码
  5. boost::histogram::make_weighted_profile用法的测试程序
  6. 19岁「天才少年」自制CPU!1200个晶体管,纯手工打造
  7. linux vg lv pv
  8. java BigDecimal去掉小数点后的零
  9. 斯坦福大学自然语言处理第二课“文本处理基础(Basic Text Processing)”
  10. CentOS下安装Docker-CE
  11. Java实现:堆排序
  12. structs 中过滤器问题
  13. 【C语言】头文件书写方法与规范、code::black中如何创建并编写头文件(一看就会)
  14. python 复制word内容_Python读取word文本操作详解
  15. 深圳盛世光影简述影视后期制作包括哪些工作?
  16. 人无信则不立,您了解自己的信用情况吗?
  17. 深入理解 window.onload
  18. 一款APP从设计稿到切图过程全方位揭秘
  19. KubeEdge+Fabedge集成环境搭建教程
  20. 浅谈TCP半连接攻击与全连接攻击

热门文章

  1. 三维旋转心形图(matlab 含源码及注释)
  2. PCB-RPP(ECCV 2018)
  3. 用Windows自带插件bat实现批量修改文件名
  4. Hook 微信的二维码的call
  5. IPV6路由协议——MPBGP
  6. 科技和文明的重建:科技和文明之间深刻的关系,以及科技推动文明进步的秘密
  7. python scapy库基本使用
  8. 问题 B: 走向人生巅峰
  9. 程序员私活收入:随随便便月入1万多,有的走向人生巅峰
  10. 机器学习(3) 一元线性回归(最小二乘法实现)