微信公众号开发(二)—— 图文消息

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

1. 查看开发文档

这里写图片描述

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

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

2. 创建消息对象

XML 的参数分成两种,基本参数和图文消息参数,所以把它们封装在两个 Po 类中。

BaseMessage

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

News

public class News {
    private String Title;
    private String Description;
    private String PicUrl;
    private String Url;

NewsMessage

public class NewsMessage extends BaseMessage{
    private int ArticleCount;
    private List<News> Articles;

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

3. 组装图文消息

图文消息转成 XML

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 中返回图文消息即可

返回图文消息

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

可以参考 微信公众号开发(一)——开发模式接入,消息的接收与响应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值