`
tuposky
  • 浏览: 84103 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

微信公众平台开发教程Java版(四) 图文消息

阅读更多

引言:

上一章讲到了消息的接收和发送,但是讲的是最简单的文本信息。

在微信中用的最多的信息还是图文消息,本章就为大家讲解下微信图文消息是如何实现的。

包括单图文和多图文消息。

图文消息的XML数据包结构:

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>2</ArticleCount>
<Articles>
<item>
<Title><![CDATA[title1]]></Title> 
<Description><![CDATA[description1]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
<item>
<Title><![CDATA[title]]></Title>
<Description><![CDATA[description]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
</Articles>
</xml>

   

 

从上面结构图中可以看出要注意的几点

1、图文消息的条数最大限制为10,

2、多图文中列表中的第一个为大图,其余为小图

注意:在多图文模式下只有第一个可以显示描述信息,其余的都不显示

了解了图文消息的结构后,要发送图文消息就简单了。

我们之前已经封装过消息处理的代码和图文消息的实体类,这里就不啰嗦了,不知道的可以看上一章

微信公众平台开发教程Java版(三) 消息接收和发送

 

下面我就上单图文和多图文消息的源代码

 

package com.ifp.weixin.biz.core.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import com.ifp.weixin.biz.core.CoreService;
import com.ifp.weixin.constant.Constant;
import com.ifp.weixin.entity.Message.resp.Article;
import com.ifp.weixin.entity.Message.resp.NewsMessage;
import com.ifp.weixin.entity.Message.resp.TextMessage;
import com.ifp.weixin.util.MessageUtil;

@Service("coreService")
public class CoreServiceImpl implements CoreService {

	public static Logger log = Logger.getLogger(CoreServiceImpl.class);

	@Override
	public String processRequest(HttpServletRequest request) {
		String respMessage = null;
		try {
			// xml请求解析
			Map<String, String> requestMap = MessageUtil.parseXml(request);

			// 发送方帐号(open_id)
			String fromUserName = requestMap.get("FromUserName");
			// 公众帐号
			String toUserName = requestMap.get("ToUserName");
			// 消息类型
			String msgType = requestMap.get("MsgType");

			TextMessage textMessage = new TextMessage();
			textMessage.setToUserName(fromUserName);
			textMessage.setFromUserName(toUserName);
			textMessage.setCreateTime(new Date().getTime());
			textMessage.setMsgType(Constant.RESP_MESSAGE_TYPE_TEXT);
			textMessage.setFuncFlag(0);
			
			// 文本消息
			if (msgType.equals(Constant.REQ_MESSAGE_TYPE_TEXT)) {
				// 接收用户发送的文本消息内容
				String content = requestMap.get("Content");

				// 创建图文消息
				NewsMessage newsMessage = new NewsMessage();
				newsMessage.setToUserName(fromUserName);
				newsMessage.setFromUserName(toUserName);
				newsMessage.setCreateTime(new Date().getTime());
				newsMessage.setMsgType(Constant.RESP_MESSAGE_TYPE_NEWS);
				newsMessage.setFuncFlag(0);

				List<Article> articleList = new ArrayList<Article>();
				// 单图文消息
				if ("1".equals(content)) {
					Article article = new Article();
					article.setTitle("我是一条单图文消息");
					article.setDescription("我是描述信息,哈哈哈哈哈哈哈。。。");
					article.setPicUrl("http://www.iteye.com/upload/logo/user/603624/2dc5ec35-073c-35e7-9b88-274d6b39d560.jpg");
					article.setUrl("http://tuposky.iteye.com");
					articleList.add(article);
					// 设置图文消息个数
					newsMessage.setArticleCount(articleList.size());
					// 设置图文消息包含的图文集合
					newsMessage.setArticles(articleList);
					// 将图文消息对象转换成xml字符串
					respMessage = MessageUtil.newsMessageToXml(newsMessage);
				}
				// 多图文消息
				else if ("3".equals(content)) {
					Article article1 = new Article();
					article1.setTitle("我是一条多图文消息");
					article1.setDescription("");
					article1.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20130913/2013091314543416032.jpg");
					article1.setUrl("http://tuposky.iteye.com/blog/2008583");

					Article article2 = new Article();
					article2.setTitle("微信公众平台开发教程Java版(二)接口配置 ");
					article2.setDescription("");
					article2.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20131021/2013102111243367254.jpg");
					article2.setUrl("http://tuposky.iteye.com/blog/2008655");

					Article article3 = new Article();
					article3.setTitle("微信公众平台开发教程Java版(三) 消息接收和发送");
					article3.setDescription("");
					article3.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20131021/2013102111291287031.jpg");
					article3.setUrl("http://tuposky.iteye.com/blog/2017429");

					articleList.add(article1);
					articleList.add(article2);
					articleList.add(article3);
					newsMessage.setArticleCount(articleList.size());
					newsMessage.setArticles(articleList);
					respMessage = MessageUtil.newsMessageToXml(newsMessage);
				} 
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return respMessage;
	}

}

 

单个图文和多图文的处理方式其实是一样的

单图文的时候articleList 的size为1

多图文的时候为多个。

 

运行的效果截图如下:

用户发送1,单图文消息

 

用户发送3 多图文消息

 

 Ps: 图文消息中的图片是可以引用外部资源的!

 

 

 可加我的微信公众号一起讨论

微信公众号:andedaohang

或扫描二维码



 

 

我所有的博客都搬到csdn了,以后所有的博客都会在csdn上更新,

CSDN博客地址:http://blog.csdn.net/tuposky

 

  • 大小: 69.1 KB
  • 大小: 369.7 KB
  • 大小: 437.5 KB
分享到:
评论

相关推荐

    微信开发实例 微信公众平台开发 之微信接口前期准备

    微信开发实例 微信公众平台开发教程-深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)1.微信接口前期准备。由北风网提供,微信开发实例微信公众平台基础篇: 1)微信公众平台简介:开发...

    微信公众平台开发入门教程上

    微信公众平台开发入门教程上.pptx

    微信公众平台开发入门详解(1)视频下载

    内容简介: 本视频由《微信公众平台应用开发:方法、技巧与案例》的作者刘运强(网名:柳峰)讲解微信公众平台开发入门级相关知识的系列视频之一。内容涵盖:1.微信公众平台基础知识(服务号/订阅号、公众账号注册的...

    微信公众帐号开发教程

    [037] 微信公众帐号开发教程第13篇-图文消息全攻略 - 柳峰的专栏 - 博客频道 - CSDN.NET [038] 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应 - 柳峰的专栏 - 博客频道 - CSDN.NET [040] 微信公众帐号...

    JAVA微信开发资料

    微信公众帐号开发教程第 13 篇-图文消息全攻略.85 微信公众帐号开发教程第 14 篇-自定义菜单的创建及菜单事件响应..95 微信公众帐号开发教程第 15 篇-自定义菜单的 view 类型(访问网页).. 117 微信公众帐号开发...

    微信公众账号开发教程

    经过这3个公众帐号的开发,对目前微信公众平台开放的api算是比较熟悉了,像文本消息、图文消息、音乐消息、语音消息、位置消息等全部用到过,菜单也使用过。所以,就有了写微信公众帐号开发教程的想法,将学习到的...

    微信公众平台开发入门教程(图文详解)

    由于微信的大热,为了更好的方便使用微信的用户查询一些信息,这篇文章是入门级的微信公众平台开发教程,需要的朋友可以参考下

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

    他还是一位资深的Java软件开发工程师和Android/iOS移动应用开发工程师,活跃于CocoaChina、开源中国、CSDN等社区,CSDN博客专家,在CSDN博客撰写了系列微信公众平台二次开发的教程,深受欢迎并被广泛传播,也因此...

    白狐微信公众号助手CMS 微信公众平台编辑器 微信公众平台图文排版

    白狐微信助手管理系统,包括了会员、积分、素材、模版、订单、支付、微信图文排版、样式换色、公众号授权管理、图文同步,定时群发等,支持第三方登录和支付宝、微信等快捷支付。后台支持素材管理、会员管理、积分...

    微信公众帐号开发教程之图文消息全攻略

    本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式。标题取名为"图文消息全攻略",这绝对不是标题党,是想借此机会把大家对图文消息相关的问题、疑虑、障碍全部清除掉。

    《微信公众平台入门到精通》--ZTalk

    共16期微信公众平台开发教程,微信平台的界面操作--&gt;微信消息借口API--&gt;新浪云平台SAE+PHP作为公众平台的服务端--&gt;订阅事件响应--&gt;SAE STORAGE--&gt;收发文字、图文、音频、地理位置,处理退订事件--&gt;SAE数据库、缓存、...

    微信公众平台开发教程②微信端分享功能图文详解

    本文实例讲述了微信公众平台微信端分享功能。分享给大家供大家参考,具体如下: 背景  初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客、问答,对于参差不齐的信息,自己也是有苦说不出,抽出...

    微信公众平台开发教程⑥ 微信开发集成类的使用图文详解

    本文实例讲述了微信公众平台开发之微信开发集成类的使用。分享给大家供大家参考,具体如下: 背景  这几天又在接触微信PHP方面的开发,认为之前写的文章确实有些乱,刚好发现了一个不错的集成类(看原始代码,出自...

    微信公众平台开发教程①获取用户Openid及个人信息图文详解

    本文实例讲述了微信公众平台开发获取用户Openid及个人信息。分享给大家供大家参考,具体如下: 前言: 初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客、问答,对于参差不齐的信息,自己也是有...

    微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解

    主要介绍了微信公众平台开发ThinkPHP框架下微信支付功能,结合图文形式详细分析了基于thinkPHP框架的微信支付功能实现步骤、操作技巧与相关注意事项,需要的朋友可以参考下

    ASP.NET 微信公共服务平台开发教程

    图文结合,通俗易懂,教你如何用C#实现微信公众号接口,实现消息发送与自定义菜单。其中的源代码附下载地址,代码量少,几十KB。

Global site tag (gtag.js) - Google Analytics