版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Java如何对微信各种类型消息进行封装
package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午8:38:37
*
version:1.0
*
description:图片的实体类
*/
public
class
Image
{
//图片媒体ID
private
String
MediaId;
public
String
getMediaId()
{
return
MediaId;
}
public
void
setMediaId(String
mediaId)
{
MediaId
=
mediaId;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午8:49:57
*
version:1.0
*
description:图片消息类
*/
public
class
ImageMessage
extends
BaseMessage
{
//图片对象
private
Image
image;
public
Image
getImage()
{
return
image;
}
public
void
setImage(Image
image)
{
this.image
=
image;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午9:02:14
*
version:1.0
*
description:视频的实体类
*/
public
class
Video
{
//视频消息的媒体ID
private
String
MediaId;
//视频消息的标题
private
String
Title;
//视频消息的描述
private
String
Description;
public
String
getMediaId()
{
return
MediaId;
}
public
void
setMediaId(String
mediaId)
{
MediaId
=
mediaId;
}
public
String
getTitle()
{
return
Title;
}
public
void
setTitle(String
title)
{
Title
=
title;
}
public
String
getDescription()
{
return
Description;
}
public
void
setDescription(String
description)
{
Description
=
description;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午9:10:14
*
version:1.0
*
description:视频消息类
*/
public
class
VideoMessage
extends
BaseMessage{
//视频对象
private
Video
video;
public
Video
getVideo()
{
return
video;
}
public
void
setVideo(Video
video)
{
this.video
=
video;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午9:21:47
*
version:1.0
*
description:语音消息实体类
*/
public
class
Voice
{
//语音媒体编号
private
String
MediaId;
public
String
getMediaId()
{
return
MediaId;
}
public
void
setMediaId(String
mediaId)
{
MediaId
=
mediaId;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午9:44:58
*
version:1.0</p>
*
description:语音消息类
*/
public
class
VoiceMessage
extends
BaseMessage{
//语音对象
private
Voice
voice;
public
Voice
getVoice()
{
return
voice;
}
public
void
setVoice(Voice
voice)
{
this.voice
=
voice;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午9:48:11
*
version:1.0
*
description:音乐消息实体类
*/
public
class
Music
{
//音乐标题
private
String
Title;
//音乐描述
private
String
Description;
//音乐链接
private
String
MusicUrl;
//高品质音乐链接
private
String
HQMusicUrl;
//缩略图的媒体ID
private
String
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
hQMusicUrl)
{
HQMusicUrl
=
hQMusicUrl;
}
public
String
getThumbMediaId()
{
return
ThumbMediaId;
}
public
void
setThumbMediaId(String
thumbMediaId)
{
ThumbMediaId
=
thumbMediaId;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午9:58:21
*
<p>version:1.0</p>
*
<p>description:音乐消息类</p>
*/
public
class
MusicMessage
extends
BaseMessage{
//音乐对象
private
Music
music;
public
Music
getMusic()
{
return
music;
}
public
void
setMusic(Music
music)
{
this.music
=
music;
}
}package
com.wtz.message.response;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午10:05:29
*
<p>version:1.0</p>
*
<p>description:图文实体类</p>
*/
public
class
Article
{
//图文标题
private
String
Title;
//图文描述
private
String
Description;
//图片链接,支持JPG,PNG格式,较好的效果为大图
private
String
PicUrl;
//图文消息跳转链接
private
String
Url;
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
getPicUrl()
{
return
PicUrl;
}
public
void
setPicUrl(String
picUrl)
{
PicUrl
=
picUrl;
}
public
String
getUrl()
{
return
Url;
}
public
void
setUrl(String
url)
{
Url
=
url;
}
}package
com.wtz.message.response;
import
java.util.List;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午10:16:22
*
<p>version:1.0</p>
*
<p>description:图文消息类</p>
*/
public
class
NewsMessage
extends
BaseMessage{
//图文条数
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;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午10:53:23
*
<p>version:1.0</p>
*
<p>description:请求消息基类(普通用户->公众账号)</p>
*
<p>站在服务器端的视角:接收信息</p>
*/
public
class
BaseMessage
{
//开发者微信号
private
String
ToUserName;
//发送方账号(一个OpenId)
private
String
FromUserName;
//消息创建时间(整型)
private
long
CreateTime;
//消息类型
private
String
MsgType;
//消息ID,64位整型
private
long
MsgId;
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;
}
public
long
getMsgId()
{
return
MsgId;
}
public
void
setMsgId(long
msgId)
{
MsgId
=
msgId;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午11:04:35
*
<p>version:1.0</p>
*
<p>description:文本消息</p>
*/
public
class
TextMessage
extends
BaseMessage{
//消息内容
private
String
Content;
public
String
getContent()
{
return
Content;
}
public
void
setContent(String
content)
{
Content
=
content;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午11:20:50
*
<p>version:1.0</p>
*
<p>description:图片消息</p>
*/
public
class
ImageMessage
extends
BaseMessage{
//图片链接
private
String
PicUrl;
//图片消息媒体ID
private
String
MediaId;
public
String
getPicUrl()
{
return
PicUrl;
}
public
void
setPicUrl(String
picUrl)
{
PicUrl
=
picUrl;
}
public
String
getMediaId()
{
return
MediaId;
}
public
void
setMediaId(String
mediaId)
{
MediaId
=
mediaId;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午11:27:40
*
<p>version:1.0</p>
*
<p>description:语音消息类</p>
*/
public
class
VoiceMessage
extends
BaseMessage
{
//媒体ID
private
String
MediaId;
//语音格式
private
String
Format;
public
String
getMediaId()
{
return
MediaId;
}
public
void
setMediaId(String
mediaId)
{
MediaId
=
mediaId;
}
public
String
getFormat()
{
return
Format;
}
public
void
setFormat(String
format)
{
Format
=
format;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午3:28:03
*
<p>version:1.0</p>
*
<p>description:视频消息类</p>
*/
public
class
VideoMessage
extends
BaseMessage
{
//视频消息媒体ID
private
String
MediaId;
//视频消息缩略图的媒体ID
private
String
ThumbMediaId;
public
String
getMediaId()
{
return
MediaId;
}
public
void
setMediaId(String
mediaId)
{
MediaId
=
mediaId;
}
public
String
getThumbMediaId()
{
return
ThumbMediaId;
}
public
void
setThumbMediaId(String
thumbMediaId)
{
ThumbMediaId
=
thumbMediaId;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午3:27:40
*
<p>version:1.0</p>
*
<p>description:地理位置消息类</p>
*/
public
class
LocationMessage
extends
BaseMessage
{
//地理位置纬度
private
String
Location_X;
//地理位置经度
private
String
Location_Y;
//地图缩放大小
private
String
Scale;
//地理位置信息
private
String
Label;
public
String
getLocation_X()
{
return
Location_X;
}
public
void
setLocation_X(String
location_X)
{
Location_X
=
location_X;
}
public
String
getLocation_Y()
{
return
Location_Y;
}
public
void
setLocation_Y(String
location_Y)
{
Location_Y
=
location_Y;
}
public
String
getScale()
{
return
Scale;
}
public
void
setScale(String
scale)
{
Scale
=
scale;
}
public
String
getLabel()
{
return
Label;
}
public
void
setLabel(String
label)
{
Label
=
label;
}
}package
com.wtz.message.request;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午1:58:04
*
<p>version:1.0</p>
*
<p>description:链接消息类</p>
*/
public
class
LinkMessage
extends
BaseMessage
{
//消息标题
private
String
Title;
//消息描述
private
String
Description;
//消息链接
private
String
Url;
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
getUrl()
{
return
Url;
}
public
void
setUrl(String
url)
{
Url
=
url;
}
}package
com.wtz.message.event;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
上午10:44:09
*
<p>version:1.0</p>
*
<p>description:基础事件消息类</p>
*/
public
class
BaseEventMessage
{
//开发者微信号
private
String
ToUserName;
//发送方账号(一个OpenID)
private
String
FromUserName;
//消息创建时间(整型)
private
long
CreateTime;
//消息类型
private
String
MsgType;
//事件类型
private
String
Event;
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;
}
public
String
getEvent()
{
return
Event;
}
public
void
setEvent(String
event)
{
Event
=
event;
}
}package
com.wtz.message.event;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午3:24:30
*
<p>version:1.0</p>
*
<p>description:扫描带参数二维码事件类</p>
*/
public
class
QRCodeEventMessage
extends
BaseEventMessage{
//事件Key值
private
String
EventKey;
//用于换取二维码图片
private
String
Ticket;
public
String
getEventKey()
{
return
EventKey;
}
public
void
setEventKey(String
eventKey)
{
EventKey
=
eventKey;
}
public
String
getTicket()
{
return
Ticket;
}
public
void
setTicket(String
ticket)
{
Ticket
=
ticket;
}
}package
com.wtz.message.event;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午3:27:11
*
<p>version:1.0</p>
*
<p>description:关注/取消关注事件类</p>
*/
public
class
SubscribeEventMessage
extends
BaseEventMessage{
}package
com.wtz.message.event;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午3:32:42
*
<p>version:1.0</p>
*
<p>description:自定义菜单事件类</p>
*/
public
class
MenuEventMessage
extends
BaseEventMessage{
//事件Key值,与自定义菜单接口中Key值对应
private
String
EventKey;
public
String
getEventKey()
{
return
EventKey;
}
public
void
setEventKey(String
eventKey)
{
EventKey
=
eventKey;
}
}package
com.wtz.message.event;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月20日
下午3:37:50
*
<p>version:1.0</p>
*
<p>description:上报地理位置事件类</p>
*/
public
class
LocationEventMessage
extends
BaseEventMessage{
//地理位置纬度
private
String
Latitude;
//地理位置经度
private
String
Longitude;
//地理位置精度
private
String
Precision;
public
String
getLatitude()
{
return
Latitude;
}
public
void
setLatitude(String
latitude)
{
Latitude
=
latitude;
}
public
String
getLongitude()
{
return
Longitude;
}
public
void
setLongitude(String
longitude)
{
Longitude
=
longitude;
}
public
String
getPrecision()
{
return
Precision;
}
public
void
setPrecision(String
precision)
{
Precision
=
precision;
}
}package
com.wtz.util;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.Writer;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import
org.dom4j.Document;
import
org.dom4j.DocumentException;
import
org.dom4j.Element;
import
org.dom4j.io.SAXReader;
import
com.thoughtworks.xstream.XStream;
import
com.thoughtworks.xstream.core.util.QuickWriter;
import
com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import
com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import
com.thoughtworks.xstream.io.xml.XppDriver;
import
com.wtz.message.response.ImageMessage;
import
com.wtz.message.response.MusicMessage;
import
com.wtz.message.response.NewsMessage;
import
com.wtz.message.response.TextMessage;
import
com.wtz.message.response.VideoMessage;
import
com.wtz.message.response.VoiceMessage;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月19日
下午3:29:58
*
<p>version:1.0</p>
*
<p>description:消息处理工具类</p>
*/
public
class
MessageUtil
{
//请求消息类型:文本
public
static
final
String
REQ_MESSAGE_TYPE_TEXT
=
"text";
//请求消息类型:图片
public
static
final
String
REQ_MESSAGE_TYPE_IMAGE
=
"image";
//请求消息类型:语音
public
static
final
String
REQ_MESSAGE_TYPE_VOICE
=
"voice";
//请求消息类型:视频
public
static
final
String
REQ_MESSAGE_TYPE_VIDEO
=
"video";
//请求消息类型:地理位置
public
static
final
String
REQ_MESSAGE_TYPE_LOCATION
=
"location";
//请求消息类型:链接
public
static
final
String
REQ_MESSAGE_TYPE_LINK
=
"link";
//请求消息类型:事件推送
public
static
final
String
REQ_MESSAGE_TYPE_EVENT
=
"event";
//
//事件类型:subscribe(订阅)
public
static
final
String
EVENT_TYPE_SUBSCRIBE
=
"subscribe";
//事件类型:unsubscribe(取消订阅)
public
static
final
String
EVENT_TYPE_UNSUBSCRIBE
=
"unsubscribe";
//事件类型:scan(用户已关注时的扫描带参数的二维码)
public
static
final
String
EVENT_TYPE_SCAN
=
"scan";
//事件类型:LOCATION(上报地理位置)
public
static
final
String
EVENT_TYPE_LOCATION
=
"LOCATION";
//事件类型:CLICK(自定义菜单)
public
static
final
String
EVENT_TYPE_CLICK
=
"CLICK";
//
//响应消息类型:文本
public
static
final
String
RESP_MESSAGE_TYPE_TEXT
=
"text";
//响应详细类型:图片
public
static
final
String
RESP_MESSAGE_TYPE_IMAGE
=
"image";
//响应消息类型:语音
public
static
final
String
RESP_MESSAGE_TYPE_VOICE
=
"voice";
//响应消息类型:视频
public
static
final
String
RESP_MESSAGE_TYPE_VIDEO
=
"video";
//响应详细类型:音乐
public
static
final
String
RESP_MESSAGE_TYPE_MUSIC
=
"music";
//响应消息类型:图文
public
static
final
String
RESP_MESSAGE_TYPE_NEWS
=
"news";
//
//从流中解析出每个节点的内容
public
static
Map<String,String>
parseXml(HttpServletRequest
request)
throws
IOException{
Map<String,String>
map
=
new
HashMap<String,String>();
//从输入流中获取流对象
InputStream
in
=
request.getInputStream();
//构建SAX阅读器对象
SAXReader
reader
=
new
SAXReader();
try
{
//从流中获得文档对象
Document
doc
=
reader.read(in);
//获得根节点
Element
root
=
doc.getRootElement();
//获取根节点下的所有子节点
List<Element>
children
=
root.elements();
for(Element
e:children){
//遍历每一个节点,并按照节点名--节点值放入map中
map.put(e.getName(),
e.getText());
System.out.println("用户发送的消息XML解析为:"
+
e.getName()
+
e.getText());
}
//关闭流
in.close();
in
=
null;
}
catch
(DocumentException
e)
{
//
TODO
Auto-generated
catch
block
e.printStackTrace();
}
return
map;
}
/**
*
用于扩展节点数据按照<ToUserName><![CDATA[toUser]]></ToUserName>,中间加了CDATA段
*/
private
static
XStream
xstream
=
new
XStream(new
XppDriver(){
public
HierarchicalStreamWriter
createWriter(Writer
out){
return
new
PrettyPrintWriter(out){
boolean
cdata
=
true;
public
void
startNode(String
name,Class
clazz){
super.startNode(name,clazz);
}
protected
void
writeText(QuickWriter
writer,String
text){
if(cdata){
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
}else{
writer.write(text);
}
}
};
}
});
/**
*
将文本消息对象转换成XML格式
*
params:textMessage
文本消息对象
*
return:xml
*/
public
static
String
messageToXml(TextMessage
textMessage){
xstream.alias("xml",textMessage.getClass());
return
xstream.toXML(textMessage);
}
/**
*
将图片消息对象转换成XML格式
*
params:imageMessage
*
return:xml
*/
public
static
String
messageToXml(ImageMessage
imageMessage){
xstream.alias("xml",
imageMessage.getClass());
return
xstream.toXML(imageMessage);
}
/**
*
将语音消息对象转换成XML格式
*
params:voiceMessage
*
return:xml
*/
public
static
String
messageToXml(VoiceMessage
voiceMessage){
xstream.alias("xml",voiceMessage.getClass());
return
xstream.toXML(voiceMessage);
}
/**
*
将视频消息对象转换成XML格式
*
params:videoMessage
*
return:xml
*/
public
static
String
messageToXml(VideoMessage
videoMessage){
xstream.alias("xml",videoMessage.getClass());
return
xstream.toXML(videoMessage);
}
/**
*
将音乐消息对象转换成XML格式
*
params:musicMessage
*
return:xml
*/
public
static
String
messageToXml(MusicMessage
musicMessage){
xstream.alias("xml",musicMessage.getClass());
return
xstream.toXML(musicMessage);
}
/**
*
将图文消息对象转换成XML格式
*
params:newsMessage
*
return:xml
*/
public
static
String
messageToXml(NewsMessage
newsMessage){
xstream.alias("xml",newsMessage.getClass());
return
xstream.toXML(newsMessage);
}
}package
com.wtz.util;
import
java.io.IOException;
import
java.util.Date;
import
java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import
com.wtz.message.response.TextMessage;
/**
*
@author
wangtianze
QQ:864620012
*
@date
2017年4月19日
下午8:04:14
*
<p>version:1.0</p>
*
<p>description:核心服务类</p>
*/
public
class
ProcessService
{
public
static
String
dealRequest(HttpServletRequest
request){
//XML格式的消息数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁学院《编译原理》2021-2022学年第一学期期末试卷
- 全新网络安全防护体系构建合同20243篇
- 二零二四年度虚拟现实技术研发与转让合同:技术研发方与使用方之间的虚拟现实技术研发和转让协议2篇
- 二零二四年云计算服务订阅合同3篇
- 科学计算语言Julia及MWORKS实践 课件 18-离散数据图与数据分布图
- 玖贝医疗咨询公司
- 《文旅新媒体运营》高职全套教学课件
- 通讯行业培训相关
- 肿瘤护理病例讨论
- 二零二四年度服装品牌代理经营权转让协议3篇
- 8421码到余三循环码的转换电路仿真课设报告
- 技术中心非法人实体运作方案(统稿)
- 探索心理学的奥秘智慧树知到答案章节测试2023年
- 小学二年级数学上册口算笔算天天练(精心编排)
- GB/T 30732-2014煤的工业分析方法仪器法
- GB/T 23436-2009汽车风窗玻璃清洗液
- GB/T 21984-2017短期天气预报
- GB/T 13917.9-2009农药登记用卫生杀虫剂室内药效试验及评价第9部分:驱避剂
- GB/T 11085-1989散装液态石油产品损耗
- XX科技职业学院教学督导员听课评价表
- 600D涤纶牛津布技术规格
评论
0/150
提交评论