文章目录

  • 一、前言
  • 二、注册微信测试号并配置信息
    • 1.获取appID和appsecret:
    • 2.获取关注微信号ID:
    • 3.生成并获取模板ID:
  • 三、代码解读
    • 1.新建一个springboot项目
    • 2.引入pom依赖
    • 3.编写代码
    • 最后点击运行,这样就搞定了!!!
  • 总结:

一、前言

不知各位屁股们有没有这种感受:
就比如这天晚上,我关注了一个营销公众号:
喜欢XXX的
屁股》。
然后这天晚上它就一直给我推这一系列的文章!
真的,对于这种行为真的很反感,很讨厌,对于不喜欢的人。
但是,我不一样,我很喜欢。不!不!不!,不是你们想的那样(狗头)。
我的意思是我不是不喜欢。
这里我引用一句古语:己所不欲,勿施于人。
意思就是 "自己不喜欢的,就要强加给对方,然后你就快乐了!"

对啊!我何不自己弄个测试公众号,我用来轰炸我的 好兄弟/好姐妹!!!
想想就激动!(冷笑话:激动就激动,xx不要动!你干嘛!哎呦~~~)
话不多刷,直接开干!
这里说明一下,公众号用的是测试公众号,此项目用于学习,无任何商业用途,而且我也是刚入门的小白,欢迎各位大佬指点!
此文章作为博主笔记,方便后续查看,如有侵权删。

二、注册微信测试号并配置信息

点击进入微信公众平台:
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
然后注册登陆进入这个界面:

记住这几个参数,后面代码要用到:分别是appID,appsecret,关注微信号ID,模板ID。

1.获取appID和appsecret:

2.获取关注微信号ID:

这里让你的兄弟微信扫码关注公众号,然后在右面用户列表就会出现关注用户的微信号了,
然后记住这个关注微信号参数,后面要用到。

3.生成并获取模板ID:

点击新增测试模板,编辑模板信息,编辑完成后,记住生成的模板ID
点击新增测试模板


模板内容:

{{date.DATA}}
作者:{{author.DATA}}
收信人:{{user.DATA}}
地点: {{place.DATA}}
备注:今天是我们交往的第{{day.DATA}}天!无论多久没联系,多远的距离,请你记住,你还是我的好儿子!

ok!到此前期所有的配置就搞定了!接下来进入代码阶段!!!

三、代码解读

1.新建一个springboot项目

2.引入pom依赖

<dependencies><!--fastjson依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.33</version></dependency><!--apche httpclient的maven依赖--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency><!-- web应用依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.1.RELEASE</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version><scope>provided</scope></dependency></dependencies>

3.编写代码

目录结构:HttpUtils,SendMessage,Template

Template:发送模板实体类

package com.jljlm.wx;/*** @Auther: jljlm* @Description: 发送模板实体类*/
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Map;@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class Template {private String touser;private String template_id;private String url;private Map<String, Map<String,String>> data;
}

发送http请求工具类:HttpUtils

package com.jljlm.wx;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.nio.charset.StandardCharsets;/*** @Auther: jljlm* @Description: 发送http请求工具类*/
public class HttpUtils {/*** 模拟get请求到微信服务器获取access_token参数*/public static String sendGet(String url) {String response = null;// 创建一个HttpClient对象CloseableHttpClient aDefault = HttpClients.createDefault();// 创建http GET请求HttpGet httpGet = new HttpGet(url);try {// 使用HttpClient来执行Request请求,得到对方的responseCloseableHttpResponse execute = aDefault.execute(httpGet);response = EntityUtils.toString(execute.getEntity(), StandardCharsets.UTF_8);} catch (Exception e) {e.printStackTrace();}finally {if (aDefault != null) {try {// 关闭aDefault.close();} catch (Exception e) {e.printStackTrace();}}}JSONObject jsonObject = JSON.parseObject(response);String access_token = jsonObject.getString("access_token");return access_token;}/*** 模拟post请求到微信服务器发送模板内容信息*/public static String sendPost(String url, String data,String access_token) {String response = null;try {CloseableHttpClient httpclient = null;CloseableHttpResponse httpResponse = null;try {httpclient = HttpClients.createDefault();HttpPost httppost = new HttpPost(url+access_token);HttpEntity stringentity = new StringEntity(data, ContentType.create("application/json", "UTF-8"));httppost.setEntity(stringentity);httpResponse = httpclient.execute(httppost);response = EntityUtils.toString(httpResponse.getEntity());} finally {if (httpclient != null) {// 关闭httpclient.close();}if (httpResponse != null) {httpResponse.close();}}} catch (Exception e) {e.printStackTrace();}return response;}}

SendMessage:发送消息

package com.jljlm.wx;import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;/*** @Auther: jljlm* @Description: 发送消息*/
public class SendMessage {// 测试号信息参数appID(填自己的!!!)public static final String APP_ID = "xxxxxxxxx";// 测试号信息参数appsecret(填自己的!!!)public static final String APP_SECRET = "xxxxxxxxx";// 模板ID(填自己的!!!!)public static final String TEMPLATE_ID="xxxxxxxxx";// 关注用户的微信号(填自己的!!!!)public static final String OPEN_ID = "xxxxxxxxx";// 模板消息详情跳转URLpublic static final String TO_URL="http://www.baidu.com";// get请求链接public static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ APP_ID + "&secret=" + APP_SECRET;// pose请求链接public static final String SEND_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";public static void main(String[] args) {// 1.模拟get请求到微信服务器获取access_token参数String access_token = HttpUtils.sendGet(ACCESS_TOKEN_URL);// 2.编辑模板内容信息HashMap<String, String> temp1 = new HashMap<>();temp1.put("value","天冷了,让我暖你一整天!");temp1.put("color","#000000");HashMap<String, String> temp2 = new HashMap<>();temp2.put("value","加辣椒了吗?");temp2.put("color","#000000");HashMap<String, String> temp3 = new HashMap<>();temp3.put("value","海绵");temp3.put("color","#000000");HashMap<String, String> temp4 = new HashMap<>();temp4.put("value","地球");temp4.put("color","#000000");HashMap<String, String> temp5 = new HashMap<>();HashMap<String, String> temp6 = new HashMap<>();temp5.put("value","5201314");temp5.put("color","#000000");HashMap<String, Map<String ,String>> templateData  = new HashMap<>();templateData.put("date",temp1);templateData.put("author",temp2);templateData.put("user",temp3);templateData.put("place",temp4);templateData.put("day",temp5);Template wxTemplate = Template.builder().template_id(TEMPLATE_ID).data(templateData).url(TO_URL).touser(OPEN_ID).build();String jsonString = JSON.toJSONString(wxTemplate);// 3.模拟post请求到微信服务器发送模板内容信息HttpUtils.sendPost(SEND_TEMPLATE_URL,jsonString,access_token);}
}

最后点击运行,这样就搞定了!!!

总结:

看到项目跑起来,已经开始激动的,快让你的好兄弟/好姐妹扫码关注,暖他一整天!!!

@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!

《用微信测试公众号慰问你的好兄弟/姐妹》:用java简单实现微信公众号消息推送(入门且详细且有效)相关推荐

  1. 实现微信公众号H5消息推送的超级详细步骤

    前言 前段时间在项目中做了一个给H5消息推送的功能,特此记录一下,感兴趣或者有需要的小伙伴可以查阅一下,因为其实代码并不难,我觉得对于初学者来说难的是一些概念和具体实现的过程,所以我会先使用微信提供的 ...

  2. python 全栈开发,Day103(微信消息推送,结算中心业务流程)

    python 全栈开发,Day103(微信消息推送,结算中心业务流程) 昨日内容回顾 第一部分:考试题(Python基础)第二部分:路飞相关 1. 是否遇到bug?难解决的技术点?印象深刻的事?- o ...

  3. java发送qq消息_Java点餐系统和点餐小程序新加微信消息推送功能

    其实想给点餐系统加推送很久了,之前也有单门写过Java版的微信消息推送和云开发版的微信消息推送.之所以一直没有加,也是考虑到大家的学习接受度,因为做订阅消息推送是一个综合性的开发工作. 需要你既要会小 ...

  4. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台

    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...

  5. Java对接微信公众号模板消息推送(架包WxJava)

    内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offi ...

  6. 专属微信公众号消息推送(java版)

    前言:专属女朋友的微信推送消息,简单的写个文档. gitee地址:消息推送 所用框架及Api springboot搭建应用 天行数据Api(彩虹屁.早安语句.天气) 前置条件 申请微信公众号测试号及微 ...

  7. 微信公众号-消息推送

    ********步骤******** 1.登录微信公众号开发平台,进行企业认证. 2.获取appid.appsecret 3.查找相应的接口 *所有的操作都需要带有accessToken *可以先利用 ...

  8. JAVA对接微信公众号(服务号、订阅号)实现模板消息推送功能

    最近做了个需求要求对接微信公众号,使用模板进行消息推送,今天抽时间总结一下相关的逻辑. 大概逻辑分为四个步骤: 获取微信调用接口凭证access_token. 获取微信模板列表. 使用模板进行消息推送 ...

  9. Java对接微信公众号模板消息推送

    最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offiaccount/Get ...

最新文章

  1. [Docker系列·8] Docker远程接口
  2. 系统架构设计师考试知识点整理-1:操作系统的类型和结构
  3. vsftpd的不同安装方式及服务控制脚本
  4. 梯度提升树(GBDT)原理小结
  5. [BUUCTF-pwn]——wustctf2020_getshell
  6. 如何定制化SAP Spartacus的购物车图标
  7. 如果你没有时间读书,至少要保留这个习惯
  8. 双向链表的增、删、查、改、python实现,超详细讲解
  9. 宿松的小孤山在安徽省内有名吗?
  10. 基于C#实现的简易绘图工具设计
  11. 利用BioEdit软件进行短序列序列比对之查看突变位点
  12. 东芝2303am维护清零_东芝打印机2303A怎样清零
  13. java 监测粘贴板事件_Java 监视系统剪贴板
  14. IDEA删除多余空行
  15. 移动建站工具(一):分秒钟将Web网站移动化
  16. 计算机桌面录屏,电脑桌面录屏软件有哪些可以推荐?
  17. 华为HCIP之静态路由
  18. ubuntu安装qv2ray问题?
  19. windows安装Pillow报错找不到zlib
  20. Appium使用swipe定位滚动列表和滚动屏幕元素

热门文章

  1. 不逼自己一把,命运就会逼你一辈子
  2. ideaij 按内容查找文件
  3. word中mathtype公式编辑
  4. [转] Delaunay三角剖分理论知识
  5. CSS遮罩父元素透明,子元素不透明
  6. 百度地图墨卡托坐标转高德经纬度坐标(偏移小)
  7. 在Groovy中使用字符串 - 51CTO.COM
  8. arcgis里dem填洼_基于多尺度窗口的DEM局部填洼方法
  9. LeetCode455分发饼干
  10. python教程57--使用D-tale做透视表并生成图形