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

一、构造消息:

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

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

1.文本消息:

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




12345678



通过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方法添加一行文本,可以联想println
msg.addln();
msg.addln("some text");
msg.addln("some other text");

// 添加超链接
msg.addLink("点击访问网页", "http://example.com");

// 输出消息内容
System.out.println(msg.getContent());

/*
输出结果如下:
hey:
some text
some other text
点击访问网页
*/
下面一段代码构造了和上面相同的TextMsg,使用了链式API:

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


2.图文消息:

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




12345678

2


<![CDATA[title1]]> 





<![CDATA[title]]>





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

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

NewsMsg news = new NewsMsg();

// 添加一条具有所有参数的Article
news.add("title", "description", "picUrl", "url");

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


为了便于使用,NewsMsg还有三个重载的add方法:
// 添加一条只有标题的Article
news.add("title");

// 添加一条只有标题和链接的Article
news.add("title", "url");

// 添加一条具有标题、链接和图片的Article
news.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属性对应的参数传null
VideoMsg msg = new VideoMsg("mediaId", "title", null);

//构建一个只有MediaId属性的视频消息,使用重载的构造方法
VideoMsg msg2 = new VideoMsg("mediaId");


二、向微信后台发送消息

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

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





你可能感兴趣的:(使用EasyWechat开发java微信公众平台应用(二)——发送不同类型的消息)