一、构造消息:
用于发送的消息对应于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");
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");
需要发送给微信后台的图文消息,格式是这样的:
12345678
2
-
-
其中,真正需要构造的只有每一个Artical的四个属性。
使用EasyWechat构造图文消息非常方便,示例代码如下:
NewsMsg news = new NewsMsg();
// 添加一条具有所有参数的Article
news.add("title", "description", "picUrl", "url");
// 添加一条不具有某个参数的Artical,只需要把这个参数设为null
news.add("title", "description", "picUrl", null);
// 添加一条只有标题的Article
news.add("title");
// 添加一条只有标题和链接的Article
news.add("title", "url");
// 添加一条具有标题、链接和图片的Article
news.add("title", "picurl", "url");
其他类型的消息在构建方式上基本一致,就放到一块了:
//构建图片消息
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;
}