zoukankan      html  css  js  c++  java
  • 微信公众号开发(二)—— 图文消息

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

    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);

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

  • 相关阅读:
    jQuery的核心对象、原型对象、静态方法、动态方法
    请写出css中选择器(元素选择器、类选择器、id选择器)的优先级顺序,和当各种选择器组合时,优先级的计算规则是什么?
    css3中的box-sizing常用的属性有哪些?分别有什么作用?
    不同域的页面如何通信(跨域)
    浮动与定位
    获取DOM元素的方式有哪些
    简要说明盒子模型和flex布局
    牛逼哄哄的对象深复制
    欧拉函数
    P2659 美丽的序列
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185244.html
Copyright © 2011-2022 走看看