前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信个人公众号开发--(3)给用户响应图文信息

微信个人公众号开发--(3)给用户响应图文信息

作者头像
浩Coding
发布2019-07-02 16:05:12
4230
发布2019-07-02 16:05:12
举报
文章被收录于专栏:浩Coding浩Coding

如何创建微信回复的图文消息?

1. 查看微信官方开发文档

根据开发文档,我们要返回一条图文信息需要返回一个如图所以的 XML 格式的信息。所以我们需要根据规定的格式构造出 XML 信息。可以发现信息分成两部分,一部分是所有消息都需要包含的基本的参数,以及图文消息所特有的一些参数,具体含义见图片下半部分。

我们只需要构建出正确的 XML 信息即可。

2. 创建消息对象

XML 的参数分成两种,基本参数BaseMessage和图文消息NewsMessage(继承与基本参数类)参数,所以把它们封装在两个 实体 类中。

BaseMessage

public class BaseMessage { //消息来源用户 private String ToUserName; //消息去向用户 private String FromUserName; // 消息创建时间 private long CreateTime; private String MsgType;

News

代码语言:javascript
复制
public class News {
   private String Title;    private String Description;    private String PicUrl;    private String Url;

NewsMessage

代码语言:java
复制
public class NewsMessage extends BaseMessage{
   private int ArticleCount;    private List<News> Articles;

微信返回的图文消息可以一次包含多条,所以用集合类型保存。如果包含多条图文消息,不显示描述 (Description)。

3. 组装图文消息

图文消息转成 XML:方法写在MessageUtil消息工具类中,下面组装图文消息方法也是如此。

public static String newsMessageToXml(NewsMessage newsMessage){ XStream xstream = new XStream(); xstream.alias("xml", newsMessage.getClass()); xstream.alias("item", new News().getClass()); return xstream.toXML(newsMessage); }

组装一个图文消息

public static String initNewsMessage(String toUserName,String fromUserName){ String message = null; List<News> newsList = new ArrayList<News>(); NewsMessage newsMessage = new NewsMessage(); /** * 只有单条图文消息才有描述 */ News news = new News(); news.setTitle("图文消息回复"); news.setDescription("图文消息回复图文消息回复图文消息回复图文消息回复图文消息回复图文消息回复图文消息回复图文消息回复图文消息回复图文消息回复"); news.setPicUrl("https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1821218122,25120525&fm=23&gp=0.jpg"); news.setUrl("http://blog.csdn.net/shuicsdn/article/details/71023212"); newsList.add(news); newsMessage.setToUserName(fromUserName); newsMessage.setFromUserName(toUserName); newsMessage.setCreateTime(new Date().getTime()); newsMessage.setMsgType(MESSAGE_NEWS); newsMessage.setArticles(newsList); newsMessage.setArticleCount(newsList.size()); message = newsMessageToXml(newsMessage); return message; }

4. 返回图文消息

最后在 Servlet 中返回图文消息即可

在DoCheckServlet处理程序中,用户回复数字2 ,即可收到图文消息。

if ("2".equals(content)) { message = MessageUtil.initNewsMessage(toUserName, fromUserName);

参考文章:https://blog.csdn.net/shuicsdn/article/details/72085716

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 查看微信官方开发文档
  • 2. 创建消息对象
  • 3. 组装图文消息
  • 4. 返回图文消息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档