java编程实现给微信发送消息
平时我们老是在网上看到使用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编程实现给微信发送消息相关推荐
- java 给微信发消息_(新版)通过java程序,给微信发送消息
之前写过一篇使用飞鸽快信给自己的微信发送消息的示例.https://blog.csdn.net/xcxzzx01/article/details/80461086 两年多过去了,飞鸽快信已改名捷易快信 ...
- java代码控制qq、微信发送消息
对于程序QQ.微信的程序控制,本人并不是直操纵他官方提供的接口,而且直接借用github大佬开发的第三方辅助程序,开放出来接口供java代码调用,实现java代码控制qq.微信发消息的功能. 一.代码 ...
- 使用Python实现给企业微信发送消息功能
本文将介绍如何使用python3给企业微信发送消息,文中有详细的图文解说及代码示例,对正在学习python的小伙伴很有帮助,需要的朋友可以参考下.编程资料点击领取 目录 一.概述 二.python脚本 ...
- linux 脚本调用企业微信_shell或python调用企业微信发送消息(实现报警功能)
shell或python调用企业微信发送消息(实现报警功能) 官方文档 注册登陆企业微信 登录企业微信管理端 -> 应用与小程序 -> 应用 -> 自建,点击"创建应用&q ...
- 微信IOT模块 用户手册(串口向微信发送消息,串口与微信通讯)
微信IOT模块 用户手册 微信IOT模块 以下简称[模块] 由 广州互联智控科技有限公司 出品. #简介 设备通过串口连接[模块],直接向手机微信发送消息.点击微信消息进入设备控制界面,通过控制界面实 ...
- 串口to微信IOT模块,串口直接向微信发送消息与微信通讯,开发板物联网
微信IOT模块 简介 微信IOT模块 以下简称[模块] 由 广州互联智控科技有限公司 出品. 功能 设备通过串口/网口UDP连接[模块],直接向手机微信发送消息.点击微信消息进入设备控制界面,通过控制 ...
- 企业微信发送消息--Python
企业微信内部消息推送--Python 我有一些自动化任务,这些自动化任务的执行结果,是成功和失败都是通过邮件发送的.但是邮件这个工具,有点正式,毕竟我只想一个通知.那有没有方法可以用微信接受通知呢? ...
- SQL Server 使用企业微信发送消息
SQL Server使用企业微信发送消息 要推送企业微信消息需要使用WebAPI方式调用下面两个方法: 1.获取Token 请求方式: GET(HTTPS) 请求地址: https://qyapi.w ...
- 使用python+微信发送消息提醒,实现程序监控
使用python+微信发送消息提醒,实现程序监控 使用python+微信可以非常方便的提醒自己运行的程序是否报错,监控程序运行状态 1.申请微信测试号 https://mp.weixin.qq.com ...
最新文章
- 有关 drop delete truncate 问题
- CentOS7系统启动、排错、修复、破解root口令
- 计算机网络智能化在铁路通信的发展,计算机网络在铁路信号中的应用
- 用Python机器学习搞定验证码
- boost::histogram::make_weighted_profile用法的测试程序
- 19岁「天才少年」自制CPU!1200个晶体管,纯手工打造
- linux vg lv pv
- java BigDecimal去掉小数点后的零
- 斯坦福大学自然语言处理第二课“文本处理基础(Basic Text Processing)”
- CentOS下安装Docker-CE
- Java实现:堆排序
- structs 中过滤器问题
- 【C语言】头文件书写方法与规范、code::black中如何创建并编写头文件(一看就会)
- python 复制word内容_Python读取word文本操作详解
- 深圳盛世光影简述影视后期制作包括哪些工作?
- 人无信则不立,您了解自己的信用情况吗?
- 深入理解 window.onload
- 一款APP从设计稿到切图过程全方位揭秘
- KubeEdge+Fabedge集成环境搭建教程
- 浅谈TCP半连接攻击与全连接攻击