千家信息网

如何使用java开发微信公众号之回复图文消息功能

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍了如何使用java开发微信公众号之回复图文消息功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下图文消息的
千家信息网最后更新 2025年11月14日如何使用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安全错误 数据库的锁怎样保障安全 qq安全网络安全报告 网络安全知广播稿 大兴区智能软件开发服务技术规范 学生网络安全监督工 网易邮件地址收件服务器怎么搞 光明区网络技术转移好处 软件开发中可能遇到哪些问题 网络安全六级作文 备案过的域名解析到香港服务器 天柱山天气预报软件开发 自建服务器的优缺点 如何区分软件开发的前台后台 智慧法院解决方案软件开发 徐汇区专业软件开发服务生产厂家 株洲市网络安全执法 软件开发毕业设计外文翻译 南京定牛互联网科技有限公司 12c数据库下载地址 互联网科技盛宴 都江堰天气预报软件开发 太仓推广网络技术成本 日照直播软件开发企业 网络安全在我心演讲比赛图片 如何查询服务器的账户和口令 宁波做银行软件开发的企业 金融研究数据库 英国网络安全大赛亚军 wow正式服物价低的服务器 金融外包软件开发 数据库条目最大值
0