溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java如何對(duì)微信各種類型消息進(jìn)行封裝

發(fā)布時(shí)間:2021-09-10 18:31:05 來(lái)源:億速云 閱讀:163 作者:小新 欄目:移動(dòng)開發(fā)

這篇文章主要介紹Java如何對(duì)微信各種類型消息進(jìn)行封裝,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

第一步:找到com.wtz.message.response包,新建類Image.java

package com.wtz.message.response;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午8:38:37
 * version:1.0
 * description:圖片的實(shí)體類
 */
public class Image {
 //圖片媒體ID
 private String MediaId;
 
 public String getMediaId() {
 return MediaId;
 }
 public void setMediaId(String mediaId) {
 MediaId = mediaId;
 }
}

第二步:找到com.wtz.message.response包,新建類ImageMessage.java

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 {
 //圖片對(duì)象
 private Image image;

 public Image getImage() {
 return image;
 }

 public void setImage(Image image) {
 this.image = image;
 }
}

第三步:找到com.wtz.message.response包,新建類Video.java

package com.wtz.message.response;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午9:02:14
 * version:1.0
 * description:視頻的實(shí)體類
 */
public class Video {
 //視頻消息的媒體ID
 private String MediaId;
 //視頻消息的標(biāo)題
 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;
 }
}

第四步:找到com.wtz.message.response包,新建類VideoMessage.java

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{
 //視頻對(duì)象
 private Video video;

 public Video getVideo() {
 return video;
 }

 public void setVideo(Video video) {
 this.video = video;
 }
}

第五步:找到com.wtz.message.response包,新建類Voice.java

package com.wtz.message.response;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午9:21:47
 * version:1.0
 * description:語(yǔ)音消息實(shí)體類
 */
public class Voice {
 //語(yǔ)音媒體編號(hào)
 private String MediaId;
 
 public String getMediaId() {
 return MediaId;
 }
 public void setMediaId(String mediaId) {
 MediaId = mediaId;
 }
}

第六步:找到com.wtz.message.response包,新建類VoiceMessage.java

package com.wtz.message.response;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午9:44:58
 * version:1.0</p>
 * description:語(yǔ)音消息類
 */
public class VoiceMessage extends BaseMessage{
 //語(yǔ)音對(duì)象
 private Voice voice;

 public Voice getVoice() {
 return voice;
 }

 public void setVoice(Voice voice) {
 this.voice = voice;
 }
}

第七步:找到com.wtz.message.response包,新建類Music.java

package com.wtz.message.response;
/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午9:48:11
 * version:1.0
 * description:音樂(lè)消息實(shí)體類
 */
public class Music {
 //音樂(lè)標(biāo)題
 private String Title;
 //音樂(lè)描述
 private String Description;
 //音樂(lè)鏈接
 private String MusicUrl;
 //高品質(zhì)音樂(lè)鏈接
 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;
 }
}

第八步:找到com.wtz.message.response包,新建類MusicMessage.java

package com.wtz.message.response;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午9:58:21
 * <p>version:1.0</p>
 * <p>description:音樂(lè)消息類</p>
 */
public class MusicMessage extends BaseMessage{
 //音樂(lè)對(duì)象
 private Music music;

 public Music getMusic() {
 return music;
 }

 public void setMusic(Music music) {
 this.music = music;
 }
}

第九步:找到com.wtz.message.response包,新建類Article.java

package com.wtz.message.response;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午10:05:29
 * <p>version:1.0</p>
 * <p>description:圖文實(shí)體類</p>
 */
public class Article {
 //圖文標(biāo)題
 private String Title;
 //圖文描述
 private String Description;
 //圖片鏈接,支持JPG,PNG格式,較好的效果為大圖
 private String PicUrl;
 //圖文消息跳轉(zhuǎn)鏈接
 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;
 }
}

第十步:找到com.wtz.message.response包,新建類NewsMessage.java

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{
 //圖文條數(shù)
 private int ArticleCount;
 //多條圖文消息信息,默認(rèn)第一個(gè)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;
 }
}

第十一步:新建包c(diǎn)om.wtz.message.request,新建類BaseMessage.java

package com.wtz.message.request;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午10:53:23
 * <p>version:1.0</p>
 * <p>description:請(qǐng)求消息基類(普通用戶->公眾賬號(hào))</p>
 * <p>站在服務(wù)器端的視角:接收信息</p>
 */
public class BaseMessage {
 //開發(fā)者微信號(hào)
 private String ToUserName;
 //發(fā)送方賬號(hào)(一個(gè)OpenId)
 private String FromUserName;
 //消息創(chuàng)建時(shí)間(整型)
 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;
 }
}

第十二步:找到com.wtz.message.request包,新建類TextMessage.java

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{
 //消息內(nèi)容
 private String Content;

 public String getContent() {
 return Content;
 }

 public void setContent(String content) {
 Content = content;
 }
}

第十三步:找到com.wtz.message.request包,新建類ImageMessage.java

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;
 }
}

第十四步:找到com.wtz.message.request包,新建類VoiceMessage.java

package com.wtz.message.request;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午11:27:40
 * <p>version:1.0</p>
 * <p>description:語(yǔ)音消息類</p>
 */
public class VoiceMessage extends BaseMessage {
 //媒體ID
 private String MediaId;
 //語(yǔ)音格式
 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;
 }
}

第十五步:找到com.wtz.message.request包,新建類VideoMessage.java

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;
 }
}

第十六步:找到com.wtz.message.request包,新建類LocatonMessage.java

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;
 //地理位置經(jīng)度
 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;
 }
}

第十七步:找到com.wtz.message.request包,新建類LinkMessage.java

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 {
 //消息標(biāo)題
 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;
 }
}

第十八步:新建包c(diǎn)om.wtz.message.event,新建類BaseEventMessage.java

package com.wtz.message.event;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 上午10:44:09
 * <p>version:1.0</p>
 * <p>description:基礎(chǔ)事件消息類</p>
 */
public class BaseEventMessage {
 //開發(fā)者微信號(hào)
 private String ToUserName;
 //發(fā)送方賬號(hào)(一個(gè)OpenID)
 private String FromUserName;
 //消息創(chuàng)建時(shí)間(整型)
 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;
 }
}

第十九步:找到包c(diǎn)om.wtz.message.event,新建類QRCodeEventMessage.java

package com.wtz.message.event;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 下午3:24:30
 * <p>version:1.0</p>
 * <p>description:掃描帶參數(shù)二維碼事件類</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;
 } 
}

第二十步:找到包c(diǎn)om.wtz.message.event,新建類SubscribeEventMessage.java

package com.wtz.message.event;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 下午3:27:11
 * <p>version:1.0</p>
 * <p>description:關(guān)注/取消關(guān)注事件類</p>
 */
public class SubscribeEventMessage extends BaseEventMessage{
 
}

第二十一步:找到包c(diǎn)om.wtz.message.event,新建類MenuEventMessage.java

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值對(duì)應(yīng)
 private String EventKey;

 public String getEventKey() {
 return EventKey;
 }

 public void setEventKey(String eventKey) {
 EventKey = eventKey;
 }
}

第二十二步:找到包c(diǎn)om.wtz.message.event,新建類LocationEventMessage.java

package com.wtz.message.event;

/**
 * @author wangtianze QQ:864620012
 * @date 2017年4月20日 下午3:37:50
 * <p>version:1.0</p>
 * <p>description:上報(bào)地理位置事件類</p>
 */
public class LocationEventMessage extends BaseEventMessage{
 //地理位置緯度
 private String Latitude;
 //地理位置經(jīng)度
 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;
 }
}

第二十三步:找到包c(diǎn)om.wtz.util下的MessageUtil.java類,修改這個(gè)類添加請(qǐng)求和回復(fù)的各種消息類型,事件類型,添加將各種類型消息轉(zhuǎn)換成XML格式的方法

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 {
 //請(qǐng)求消息類型:文本
 public static final String REQ_MESSAGE_TYPE_TEXT = "text";
 //請(qǐng)求消息類型:圖片
 public static final String REQ_MESSAGE_TYPE_IMAGE = "image";
 //請(qǐng)求消息類型:語(yǔ)音
 public static final String REQ_MESSAGE_TYPE_VOICE = "voice";
 //請(qǐng)求消息類型:視頻
 public static final String REQ_MESSAGE_TYPE_VIDEO = "video";
 //請(qǐng)求消息類型:地理位置
 public static final String REQ_MESSAGE_TYPE_LOCATION = "location";
 //請(qǐng)求消息類型:鏈接
 public static final String REQ_MESSAGE_TYPE_LINK = "link";
 //請(qǐng)求消息類型:事件推送
 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(用戶已關(guān)注時(shí)的掃描帶參數(shù)的二維碼)
 public static final String EVENT_TYPE_SCAN = "scan";
 //事件類型:LOCATION(上報(bào)地理位置)
 public static final String EVENT_TYPE_LOCATION = "LOCATION";
 //事件類型:CLICK(自定義菜單)
 public static final String EVENT_TYPE_CLICK = "CLICK";
 
 //---------------------------------------------------------------
 
 //響應(yīng)消息類型:文本
 public static final String RESP_MESSAGE_TYPE_TEXT = "text";
 //響應(yīng)詳細(xì)類型:圖片
 public static final String RESP_MESSAGE_TYPE_IMAGE = "image";
 //響應(yīng)消息類型:語(yǔ)音
 public static final String RESP_MESSAGE_TYPE_VOICE = "voice";
 //響應(yīng)消息類型:視頻
 public static final String RESP_MESSAGE_TYPE_VIDEO = "video";
 //響應(yīng)詳細(xì)類型:音樂(lè)
 public static final String RESP_MESSAGE_TYPE_MUSIC = "music";
 //響應(yīng)消息類型:圖文
 public static final String RESP_MESSAGE_TYPE_NEWS = "news";
 
 //---------------------------------------------------------------
 
 //從流中解析出每個(gè)節(jié)點(diǎn)的內(nèi)容
 public static Map<String,String> parseXml(HttpServletRequest request) throws IOException{
 Map<String,String> map = new HashMap<String,String>();
 
 //從輸入流中獲取流對(duì)象
 InputStream in = request.getInputStream();
 
 //構(gòu)建SAX閱讀器對(duì)象
 SAXReader reader = new SAXReader();
 try {
  //從流中獲得文檔對(duì)象
  Document doc = reader.read(in);
  
  //獲得根節(jié)點(diǎn)
  Element root = doc.getRootElement();
  
  //獲取根節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
  List<Element> children = root.elements();
  
  for(Element e:children){
  //遍歷每一個(gè)節(jié)點(diǎn),并按照節(jié)點(diǎn)名--節(jié)點(diǎn)值放入map中
  map.put(e.getName(), e.getText());
  System.out.println("用戶發(fā)送的消息XML解析為:" + e.getName() + e.getText());
  }
  
  //關(guān)閉流
  in.close();
  in = null;
 } catch (DocumentException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 
 return map;
 }
 
 /**
 * 用于擴(kuò)展節(jié)點(diǎn)數(shù)據(jù)按照<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);
   }
  }
  };
 }
 });
 
 /**
 * 將文本消息對(duì)象轉(zhuǎn)換成XML格式
 * params:textMessage 文本消息對(duì)象
 * return:xml
 */
 public static String messageToXml(TextMessage textMessage){
 xstream.alias("xml",textMessage.getClass());
 return xstream.toXML(textMessage);
 }
 
 /**
 * 將圖片消息對(duì)象轉(zhuǎn)換成XML格式
 * params:imageMessage
 * return:xml
 */
 public static String messageToXml(ImageMessage imageMessage){
 xstream.alias("xml", imageMessage.getClass());
 return xstream.toXML(imageMessage);
 }
 
 /**
 * 將語(yǔ)音消息對(duì)象轉(zhuǎn)換成XML格式
 * params:voiceMessage
 * return:xml
 */
 public static String messageToXml(VoiceMessage voiceMessage){
 xstream.alias("xml",voiceMessage.getClass());
 return xstream.toXML(voiceMessage);
 }
 
 /**
 * 將視頻消息對(duì)象轉(zhuǎn)換成XML格式
 * params:videoMessage
 * return:xml
 */
 public static String messageToXml(VideoMessage videoMessage){
 xstream.alias("xml",videoMessage.getClass());
 return xstream.toXML(videoMessage);
 }
 
 /**
 * 將音樂(lè)消息對(duì)象轉(zhuǎn)換成XML格式
 * params:musicMessage
 * return:xml
 */
 public static String messageToXml(MusicMessage musicMessage){
 xstream.alias("xml",musicMessage.getClass());
 return xstream.toXML(musicMessage);
 }
 
 /**
 * 將圖文消息對(duì)象轉(zhuǎn)換成XML格式
 * params:newsMessage
 * return:xml
 */
 public static String messageToXml(NewsMessage newsMessage){
 xstream.alias("xml",newsMessage.getClass());
 return xstream.toXML(newsMessage);
 }
}

第二十四步:找到包c(diǎn)om.wtz.util下的ProcessService.java類,修改dealRequest方法響應(yīng)各種類型的消息

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:核心服務(wù)類</p>
 */
public class ProcessService {
 public static String dealRequest(HttpServletRequest request){
 //XML格式的消息數(shù)據(jù)
 String respXml = "";
 //默認(rèn)返回的文本消息內(nèi)容
 String respContent = "未知的消息類型";
 //調(diào)用parseXml方法解析請(qǐng)求消息
 Map<String, String> requestMap;
 try {
  requestMap = MessageUtil.parseXml(request);
  //發(fā)送方賬號(hào)
  String fromUserName = requestMap.get("FromUserName");
  //開發(fā)者微信號(hào)
  String toUserName = requestMap.get("ToUserName");
  //消息類型
  String MsgType = requestMap.get("MsgType");
  
  //回復(fù)文本消息
  TextMessage textMessage = new TextMessage();
  textMessage.setToUserName(fromUserName);
  textMessage.setFromUserName(toUserName);
  textMessage.setCreateTime(new Date().getTime());
  textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
  
  if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)){
  respContent = "您發(fā)送的是文本消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)){
  respContent = "您發(fā)送的是圖片消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)){
  respContent = "您發(fā)送的是語(yǔ)音消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)){
  respContent = "您發(fā)送的是視頻消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)){
  respContent = "您發(fā)送的是地理位置消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)){
  respContent = "您發(fā)送的是鏈接消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)){
  //事件類型
  String eventType = requestMap.get("Event");
  if(eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)){
   respContent = "感謝您的關(guān)注";
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)){
   //TODO 取消訂閱后用戶不會(huì)再收到公眾號(hào)發(fā)送的消息,因此不需要回復(fù)
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_SCAN)){
   //TODO 處理掃描帶參數(shù)二維碼事件
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)){
   //TODO 處理上報(bào)地理位置事件
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_CLICK)){
   //TODO 處理菜單點(diǎn)擊事件
  }
  }
  //設(shè)置文本消息的內(nèi)容
  textMessage.setContent(respContent);
  //將文本消息對(duì)象轉(zhuǎn)換成xml
  respXml = MessageUtil.messageToXml(textMessage);
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 
 return respXml;
 }
}

各種類型消息封裝完成。

以上是“Java如何對(duì)微信各種類型消息進(jìn)行封裝”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI