使用EasyWechat开发java微信公众平台应用(二)——发送不同类型

一、构造消息:

用于发送的消息对应于org.easywechat.msg包中继承BaseMsg的类,目前共有六种:

TextMsg 文本消息NewsMsg 图文消息ImageMsg 图片消息VoiceMsg 语音消息VideoMsg 视频消息MusicMsg 音乐消息

1.文本消息:

先来看一下我们需要发送给微信后台的消息,是这样的:

<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>

通过EasyWechat,构建消息的时候不需要考虑FromUserName、ToUserName、CreateTime、MsgType这属性,这些可以放心的交给EastWechat来完成。

只需要指明你需要发送的文本消息的Content属性的内容,文本消息就构建好了。

下面一行代码构造一个简单的文本消息,其Content属性值是“hey”。

TextMsg msg = new TextMsg("hey");
// 效果等同于上面的代码TextMsg msg = new TextMsg();msg.setContent("hey");

在实际使用中,文本消息的内容经常是拼接而成,EasyWechat为拼接文本消息的内容提供了便利的API:

TextMsg msg = new TextMsg();msg.add("hey:");//addln方法添加一行文本,可以联想printlnmsg.addln();msg.addln("some text");msg.addln("some other text");// 添加超链接msg.addLink("点击访问网页", "http://example.com");// 输出消息内容System.out.println(msg.getContent());/*输出结果如下:hey:some textsome other text<a href="http://example.com">点击访问网页</a>*/

下面一段代码构造了和上面相同的TextMsg,使用了链式API:

TextMsg msg = new TextMsg("hey:\n");msg.addln("some text").addln("some other text").addLink("点击访问网页", "http://example.com");

2.图文消息:

需要发送给微信后台的图文消息,格式是这样的:

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

其中,真正需要构造的只有每一个Artical的四个属性。

使用EasyWechat构造图文消息非常方便,示例代码如下:

NewsMsg news = new NewsMsg();// 添加一条具有所有参数的Articlenews.add("title", "description", "picUrl", "url");// 添加一条不具有某个参数的Artical,只需要把这个参数设为nullnews.add("title", "description", "picUrl", null);

为了便于使用,NewsMsg还有三个重载的add方法:

// 添加一条只有标题的Articlenews.add("title");// 添加一条只有标题和链接的Articlenews.add("title", "url");// 添加一条具有标题、链接和图片的Articlenews.add("title", "picurl", "url");

3.其他类型的消息:

其他类型的消息在构建方式上基本一致,就放到一块了:

//构建图片消息ImageMsg imageMsg=new ImageMsg("MediaId");//构建语音消息VoiceMsg voiceMsg=new VoiceMsg("MediaId");//构建视频消息VideoMsg videoMsg=new VideoMsg("mediaId", "title", "description");//构建音乐消息MusicMsg musicMsg=new MusicMsg("thumbMediaId", "title", "description", "musicUrl", "hqMusicUrl");

其中,有一些消息类型并不要求具备上述所有属性。可以给不需要的属性参数传null,或者使用重载的构造方法。例如:

//构建不需要Description属性的视频消息//可以给构造方法中Description属性对应的参数传nullVideoMsg msg = new VideoMsg("mediaId", "title", null);//构建一个只有MediaId属性的视频消息,使用重载的构造方法VideoMsg msg2 = new VideoMsg("mediaId");

二、向微信后台发送消息

只需在一个继承WeixinServletSupport的类中,重写handleXXXMsg方法,返回构建好的消息。

@Overrideprotected BaseMsg handleXxxMsg(XxxReqMsg reqMsg) {XxxMsg msg = ...//构建响应消息return msg;}

谦受益,满招损。

使用EasyWechat开发java微信公众平台应用(二)——发送不同类型

相关文章:

你感兴趣的文章:

标签云: