【移动应用开发技术】Java如何对微信各种类型消息进行封装_第1页
【移动应用开发技术】Java如何对微信各种类型消息进行封装_第2页
【移动应用开发技术】Java如何对微信各种类型消息进行封装_第3页
【移动应用开发技术】Java如何对微信各种类型消息进行封装_第4页
【移动应用开发技术】Java如何对微信各种类型消息进行封装_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论