Java微信公众平台开发(四)–回复消息的分类及实体的创建

转自:http://www.cuiyongzhi.com/post/42.html

前面有说道对接收到微信服务器消息后对消息的分类,当时主要分为普通消息和事件消息,这里我们要讲述的是我们在给用户回复的消息类型,在这里也可以大致分为两类:一种为不需要上传资源到微信服务器的这里成为【普通消息回复】;还有一种需要上传资源到微信服务器的这里称为【多媒体消息回复】!

  • 普通消息回复:回复文本消息/回复图文消息

  • 多媒体消息回复:回复图片消息/回复语音消息/回复视频消息/回复音乐消息

(一)回复消息基类的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: BaseMessage
 
* @Description: 返回消息体-基本消息
 
* @author dapengniao
 
* @date 2016年3月7日 下午3:16:57
 
*/
public 
class 
BaseMessage {  
    
// 接收方帐号(收到的OpenID)   
    
private 
String ToUserName;  
    
// 开发者微信号   
    
private 
String FromUserName;  
    
// 消息创建时间 (整型)   
    
private 
long 
CreateTime;  
    
// 消息类型(text/music/news)   
    
private 
String MsgType;  
      
   
    
public 
String getToUserName() {  
        
return 
ToUserName;  
    
}  
   
    
public 
void 
setToUserName(String toUserName) {  
        
ToUserName = toUserName;  
    
}  
   
    
public 
String getFromUserName() {  
        
return 
FromUserName;  
    
}  
   
    
public 
void 
setFromUserName(String fromUserName) {  
        
FromUserName = fromUserName;  
    
}  
   
    
public 
long 
getCreateTime() {  
        
return 
CreateTime;  
    
}  
   
    
public 
void 
setCreateTime(
long 
createTime) {  
        
CreateTime = createTime;  
    
}  
   
    
public 
String getMsgType() {  
        
return 
MsgType;  
    
}  
   
    
public 
void 
setMsgType(String msgType) {  
        
MsgType = msgType;  
    
}  
   
   
}

(二)普通消息回复实体实现

①文本消息消息体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: TextMessage
 
* @Description: 文本消息消息体
 
* @author dapengniao
 
* @date 2016年3月7日 下午3:54:22
 
*/
public 
class 
TextMessage 
extends 
BaseMessage {  
    
// 回复的消息内容   
    
private 
String Content;  
   
    
public 
String getContent() {  
        
return 
Content;  
    
}  
   
    
public 
void 
setContent(String content) {  
        
Content = content;  
    
}  
}

②图文/多图文消息实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: Article
 
* @Description: 图文消息体
 
* @author dapengniao
 
* @date 2016年3月7日 下午3:16:28
 
*/
public 
class 
Article {  
    
// 图文消息名称   
    
private 
String Title;  
    
// 图文消息描述   
    
private 
String Description;  
    
// 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,
    
private 
String PicUrl;  
    
// 点击图文消息跳转链接   
    
private 
String Url;  
   
    
public 
String getTitle() {  
        
return 
Title;  
    
}  
   
    
public 
void 
setTitle(String title) {  
        
Title = title;  
    
}  
   
    
public 
String getDescription() {  
        
return 
null 
== Description ? 
"" 
: Description;  
    
}  
   
    
public 
void 
setDescription(String description) {  
        
Description = description;  
    
}  
   
    
public 
String getPicUrl() {  
        
return 
null 
== PicUrl ? 
"" 
: PicUrl;  
    
}  
   
    
public 
void 
setPicUrl(String picUrl) {  
        
PicUrl = picUrl;  
    
}  
   
    
public 
String getUrl() {  
        
return 
null 
== Url ? 
"" 
: Url;  
    
}  
   
    
public 
void 
setUrl(String url) {  
        
Url = url;  
    
}  
   
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package 
com.cuiyongzhi.wechat.message.resp;
 
import 
java.util.List;
 
/**
 
* ClassName: NewsMessage
 
* @Description: 多图文消息
 
* @author dapengniao
 
* @date 2016年3月7日 下午3:52:18
 
*/
public 
class 
NewsMessage 
extends 
BaseMessage {  
    
// 图文消息个数,限制为10条以内   
    
private 
int 
ArticleCount;  
    
// 多条图文消息信息,默认第一个item为大图   
    
private 
List<Article> Articles;  
   
    
public 
int 
getArticleCount() {  
        
return 
ArticleCount;  
    
}  
   
    
public 
void 
setArticleCount(
int 
articleCount) {  
        
ArticleCount = articleCount;  
    
}  
   
    
public 
List<Article> getArticles() {  
        
return 
Articles;  
    
}  
   
    
public 
void 
setArticles(List<Article> articles) {  
        
Articles = articles;  
    
}  
}

(三)多媒体消息回复消息体实现

①回复图片消息实体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: Image
 
* @Description: 图片回复消息体
 
* @author dapengniao
 
* @date 2016年3月8日 下午5:55:18
 
*/
public 
class 
Image {
 
    
private 
String MediaId;
 
    
public 
String getMediaId() {
        
return 
MediaId;
    
}
 
    
public 
void 
setMediaId(String mediaId) {
        
MediaId = mediaId;
    
}
     
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: ImageMessage
 
* @Description: 图片消息
 
* @author dapengniao
 
* @date 2016年3月8日 下午5:58:10
 
*/
public 
class 
ImageMessage {
     
    
private 
Image Image;
 
    
public 
Image getImage() {
        
return 
Image;
    
}
 
    
public 
void 
setImage(Image image) {
        
Image = image;
    
}
     
 
}

②回复音乐消息实体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: Music
 
* @Description: 音乐消息消息体
 
* @author dapengniao
 
* @date 2016年3月7日 下午3:54:00
 
*/
public 
class 
Music {  
    
// 音乐名称   
    
private 
String Title;  
    
// 音乐描述   
    
private 
String Description;  
    
// 音乐链接   
    
private 
String MusicUrl;  
    
// 高质量音乐链接,WIFI环境优先使用该链接播放音乐   
    
private 
String HQMusicUrl;
     
    
private 
String ThumbMediaId; 
//缩略图的媒体id
   
    
public 
String getThumbMediaId() {
        
return 
ThumbMediaId;
    
}
 
    
public 
void 
setThumbMediaId(String thumbMediaId) {
        
ThumbMediaId = thumbMediaId;
    
}
 
    
public 
String getTitle() {  
        
return 
Title;  
    
}  
   
    
public 
void 
setTitle(String title) {  
        
Title = title;  
    
}  
   
    
public 
String getDescription() {  
        
return 
Description;  
    
}  
   
    
public 
void 
setDescription(String description) {  
        
Description = description;  
    
}  
   
    
public 
String getMusicUrl() {  
        
return 
MusicUrl;  
    
}  
   
    
public 
void 
setMusicUrl(String musicUrl) {  
        
MusicUrl = musicUrl;  
    
}  
   
    
public 
String getHQMusicUrl() {  
        
return 
HQMusicUrl;  
    
}  
   
    
public 
void 
setHQMusicUrl(String musicUrl) {  
        
HQMusicUrl = musicUrl;  
    
}  
   
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: MusicMessage
 
* @Description: 音乐消息
 
* @author dapengniao
 
* @date 2016年3月7日 下午3:53:38
 
*/
public 
class 
MusicMessage 
extends 
BaseMessage {  
    
// 音乐   
    
private 
Music Music;  
   
    
public 
Music getMusic() {  
        
return 
Music;  
    
}  
   
    
public 
void 
setMusic(Music music) {  
        
Music = music;  
    
}  
}

③回复视频消息实体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: Video
 
* @Description: 视频消息体
 
* @author dapengniao
 
* @date 2016年3月8日 下午6:05:45
 
*/
public 
class 
Video {
 
    
private 
String MediaId;
    
private 
String Title;
    
private 
String Description;
 
    
public 
String getTitle() {
        
return 
Title;
    
}
 
    
public 
void 
setTitle(String title) {
        
Title = title;
    
}
 
    
public 
String getDescription() {
        
return 
Description;
    
}
 
    
public 
void 
setDescription(String description) {
        
Description = description;
    
}
 
    
public 
String getMediaId() {
        
return 
MediaId;
    
}
 
    
public 
void 
setMediaId(String mediaId) {
        
MediaId = mediaId;
    
}
 
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: VideoMessage
 
* @Description: 视频消息
 
* @author dapengniao
 
* @date 2016年3月8日 下午6:06:29
 
*/
public 
class 
VideoMessage {
     
    
private 
Video Video;
 
    
public 
Video getVideo() {
        
return 
Video;
    
}
 
    
public 
void 
setVideo(Video video) {
        
Video = video;
    
}
 
 
}

④回复语音消息实体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: Voice
 
* @Description: 语音消息体
 
* @author dapengniao
 
* @date 2016年3月8日 下午6:02:29
 
*/
public 
class 
Voice {
 
    
private 
String MediaId;
     
    
public 
String getMediaId() {
        
return 
MediaId;
    
}
 
    
public 
void 
setMediaId(String mediaId) {
        
MediaId = mediaId;
    
}
     
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package 
com.cuiyongzhi.wechat.message.resp;
 
/**
 
* ClassName: VoiceMessage
 
* @Description: 语音消息
 
* @author dapengniao
 
* @date 2016年3月8日 下午6:02:13
 
*/
public 
class 
VoiceMessage {
     
    
private 
Voice Voice;
 
    
public 
Voice getVoice() {
        
return 
Voice;
    
}
 
    
public 
void 
setVoice(Voice voice) {
        
Voice = voice;
    
}
 
 
     
 
}

那么到这里回复消息类型的划分和实体的具体实现代码就基本编写完成了,在这些新增实体加入后我们项目的项目结构大致如下:

1.png