如何使用java开发微信公众号之回复图文消息功能
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了如何使用java开发微信公众号之回复图文消息功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下图文消息的
千家信息网最后更新 2026年11月03日如何使用java开发微信公众号之回复图文消息功能
这篇文章主要介绍了如何使用java开发微信公众号之回复图文消息功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体内容如下
图文消息的主要参数说明
通过微信官方的消息接口指南,可以看到对图文消息的参数介绍,如下图所示:
从上图可以了解到:
1、图文消息的个数限制为10,也就是图文中ArticleCount的值(图文消息的个数,限制在10条以内)
2、对于图文消息,第一条图文的图片显示为大图,其他图文的图片显示为小图。
3、第一条图文的图片大小建议为640*320,其他图文的图片建议为80*80
下面开始实现:
请求消息的基类:
import com.thoughtworks.xstream.annotations.XStreamAlias;import java.io.Serializable;/** * @author inchlifc */public class BaseMessage implements Serializable { @XStreamAlias("ToUserName") @XStreamCDATA private String ToUserName; @XStreamAlias("FromUserName") @XStreamCDATA private String FromUserName; @XStreamAlias("CreateTime") private Long CreateTime; @XStreamAlias("MsgType") @XStreamCDATA private String MsgType; public BaseMessage() { super(); } public BaseMessage(String fromUserName, String toUserName) { super(); FromUserName = fromUserName; ToUserName = toUserName; CreateTime = System.currentTimeMillis(); } public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public Long getCreateTime() { return CreateTime; } public void setCreateTime(Long createTime) { CreateTime = createTime; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; }}图文消息类:
import com.thoughtworks.xstream.annotations.XStreamAlias;import java.util.List;@XStreamAlias("xml")public class ArticlesMessage extends BaseMessage { @XStreamAlias("ArticleCount") private int ArticleCount; @XStreamAlias("Articles") private List Articles; public int getArticleCount() { return ArticleCount; } public void setArticleCount(int articleCount) { ArticleCount = articleCount; } public List getArticles() { return Articles; } public void setArticles(List articles) { Articles = articles; }} 图文消息中的Articles类:
import com.thoughtworks.xstream.annotations.XStreamAlias;import java.util.List;@XStreamAlias("Articles")public class Articles { private List Articles;} 图文消息中的ArticlesItem类:
import com.thoughtworks.xstream.annotations.XStreamAlias;import java.io.Serializable;@XStreamAlias("item")public class ArticlesItem implements Serializable { @XStreamAlias("Title") @XStreamCDATA private String Title; @XStreamAlias("Description") @XStreamCDATA private String Description; @XStreamAlias("PicUrl") @XStreamCDATA private String PicUrl; @XStreamAlias("Url") @XStreamCDATA private String Url; public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getDescription() { return Description; } public void setDescription(String description) { Description = description; } public String getPicUrl() { return PicUrl; } public void setPicUrl(String picUrl) { PicUrl = picUrl; } public String getUrl() { return Url; } public void setUrl(String url) { Url = url; }}service层实现方法:
封装方法
/** * 获取博客图文消息 * * @param custermName * @param serverName * @param createTime * @return */ private ArticlesMessage getBlogMessage(String custermName, String serverName, Long createTime) { ArticlesMessage outputMsg = new ArticlesMessage(); outputMsg.setFromUserName(serverName); outputMsg.setToUserName(custermName); outputMsg.setCreateTime(createTime); outputMsg.setMsgType(MsgType.NEWS.getValue()); List articles = new ArrayList<>(); ArticlesItem item1 = new ArticlesItem(); item1.setTitle("晚天吹凉风"); item1.setDescription("点击进入晚天吹凉风博客"); item1.setPicUrl(WechatConstant.BASE_SERVER + "resources/images/wechat/a.png"); item1.setUrl("https://my.oschina.net/inchlifc/blog"); articles.add(item1); outputMsg.setArticles(articles); outputMsg.setArticleCount(articles.size()); return outputMsg; } 判断如果输入数字1,返回图文消息推送
// 处理接收消息 ServletInputStream in = request.getInputStream(); // 将POST流转换为XStream对象 XStream xs = new XStream(); xs = SerializeXmlUtil.createXstream(); XStream.setupDefaultSecurity(xs); xs.allowTypes(new Class[]{TextMessage.class, InputMessage.class, ArticlesMessage.class}); xs.processAnnotations(InputMessage.class); xs.processAnnotations(ArticlesMessage.class); xs.processAnnotations(ImageMessage.class); // 将指定节点下的xml节点数据映射为对象 xs.alias("xml", InputMessage.class); // 将流转换为字符串 StringBuilder xmlMsg = new StringBuilder(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1; ) { xmlMsg.append(new String(b, 0, n, "UTF-8")); } logger.info("收到消息====" + xmlMsg.toString()); // 将xml内容转换为InputMessage对象 InputMessage inputMsg = (InputMessage) xs.fromXML(xmlMsg.toString()); // 服务端 String servername = inputMsg.getToUserName(); // 客户端 String custermname = inputMsg.getFromUserName(); // 接收时间 long createTime = inputMsg.getCreateTime(); // 返回时间 Long returnTime = Calendar.getInstance().getTimeInMillis() / 1000; //接手文本内容 String content = inputMsg.getContent(); // 取得消息类型 String msgType = inputMsg.getMsgType();if (MsgType.TEXT.getValue().equals(msgType)) { //输入1 推送博客信息 if ("1".equals(content)) { logger.info("收到文本1"); ArticlesMessage outputMsg = getBlogMessage(custermname, servername, returnTime); logger.info("返回博客图文消息===" + xs.toXML(outputMsg)); response.getWriter().write(xs.toXML(outputMsg)); }}运行结果:

感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用java开发微信公众号之回复图文消息功能"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
图文
消息
博客
图片
篇文章
内容
对象
公众
功能
发微
个数
凉风
参数
建议
文本
方法
时间
节点
推送
输入
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网核心科技是什么
朗新科技与工业互联网
麻工互联网科技
朗涯互联网科技
互联网科技论文
奇士达互联网科技
互联网科技美容
互联网与医疗科技
互联网科技产业特征
天津腾达互联网科技有限公司
工业互联网展湾科技股份有限公司
互联网金融科技元年
互联网科技年终奖
上海互联网科技公司ppt
工业互联网科技成果转化
江苏互联网科技小贷
南京一网一红互联网科技有限公司
科技和互联网行业的特点
互联网科技的前景
博彦科技互联网金融
互联网科技排名
左右互联网络科技
天扬科技互联网广告
须眉科技是互联网公司吗
开一家科技互联网公司需要多少钱
郑州欣桑互联网科技有限公司
优雇互联网科技有限公司
银川新华互联网科技学校招聘
互联网 科技节活动 微视频大赛