202.微信公众号开发【图文消息】

202.微信公众号开发【图文消息】202.微信公众号开发【图文消息】

根据图文消息的形式,我们可以看出,上面<xml>标签到<Articles>标签是图文的发送信息,<item>标签内是图文的信息,所以我们分两个对象来创建,

1.首先创建一个图文信息的类News: 4个属性

private String Title;

    private String Description;

    private String PicUrl;

private String Url;

2.创建一个总的图文消息的类,注意区别信息和消息,图文消息类包含图文信息类,由于一个图文消息里面可以包含多个图文信息,所以在图文消息类中定义一个List泛型用于添加图文消息,从属性上来看前面四个属性跟文本消息是一样的,所以我们可以创建基本消息类BaseMessage,让TextMessage和NewsMessage都继承它;

private String ToUserName;

    private String FromUserName;

    private Long CreateTime;

private String MsgType;

NewsMessage类:

private int ArticleCount;

private List<News> Articles;

定义完成后就可以在MessageUtil类中进行拼接:

//初始化图文消息

    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("南京理工大学泰州科技学院由国家首批“211工程重点建设院校——南京理工大学与泰州市人民*于2004年合作创办,是一所以工为主,工、经、管、文、艺等多学科综合配套、协调发展的全日制本科高校。学校围绕建设特色鲜明的高水平应用技术大学的奋斗目标,坚持明体达用的教育理念,秉持帮助学生发挥优势潜能的育人宗旨,培养高层次技术与管理人才。学校被教育部吸纳为全国CDIO工程教育改革试点高校,被誉为工程师的摇篮");

       news.setPicUrl("http://58.193.194.56/weixin/image/njusttz.jpg");

       news.setUrl("www.nustti.edu.cn");

       //放入集合

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

       //转成xml

       message = newsMessageToXml(newsMessage);

       return message;

}

 

拼接完成后将他转成微信可识别的xml形式: //图文消息转为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);

}

这样我们就可以把刚才Servlet中的菜单里的“1.南泰介绍”改成图文消息;

if ("1".equals(content)) {

              //message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.njusttzIntroduceText());

message =  MessageUtil.initNewsMessage(toUserName, fromUserName);

}

这样图文消息就完成了。