国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 微信小程序 微信開發(fā) 微信二次開發(fā)之各類型消息封裝

微信二次開發(fā)之各類型消息封裝

May 10, 2017 am 09:29 AM
java 微信

這篇文章主要為大家詳細(xì)介紹了Java微信二次開發(fā)第三篇,Java微信各類型消息封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java微信各種類型消息的封裝,供大家參考,具體內(nèi)容如下

第一步:找到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:音樂消息實(shí)體類
 */
public class Music {
 //音樂標(biāo)題
 private String Title;
 //音樂描述
 private String Description;
 //音樂鏈接
 private String MusicUrl;
 //高品質(zhì)音樂鏈接
 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:音樂消息類</p>
 */
public class MusicMessage extends BaseMessage{
 //音樂對(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ì)類型:音樂
 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);
 }
 
 /**
 * 將音樂消息對(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;
 }
}

各種類型消息封裝完成。

【相關(guān)推薦】

1. 微信公眾號(hào)平臺(tái)源碼 下載

2. 微信投票源碼

以上是微信二次開發(fā)之各類型消息封裝的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動(dòng)提交模式,再執(zhí)行多個(gè)操作,最后根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個(gè)SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時(shí)應(yīng)使用try-with-resources管理資源,妥善處理異常并關(guān)閉連接,避免連接泄漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,并保持事務(wù)盡可能短以提升性能。

如何使用Java的日歷? 如何使用Java的日歷? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過(guò)LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時(shí)間;3.使用of()方法創(chuàng)建特定日期時(shí)間;4.利用plus/minus方法不可變地增減時(shí)間;5.使用ZonedDateTime和ZoneId處理時(shí)區(qū);6.通過(guò)DateTimeFormatter格式化和解析日期字符串;7.必要時(shí)通過(guò)Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動(dòng)管理內(nèi)存的機(jī)制,通過(guò)回收不可達(dá)對(duì)象釋放堆內(nèi)存,減少內(nèi)存泄漏風(fēng)險(xiǎn)。1.GC從根對(duì)象(如棧變量、活動(dòng)線程、靜態(tài)字段等)出發(fā)判斷對(duì)象可達(dá)性,無(wú)法到達(dá)的對(duì)象被標(biāo)記為垃圾。2.基于標(biāo)記-清除算法,標(biāo)記所有可達(dá)對(duì)象,清除未標(biāo)記對(duì)象。3.采用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時(shí)較長(zhǎng)的MajorGC;Metaspace存儲(chǔ)類元數(shù)據(jù)。4.JVM提供多種GC器:SerialGC適用于小型應(yīng)用;ParallelGC提升吞吐量;CMS降

以身作則,解釋說(shuō)明 以身作則,解釋說(shuō)明 Aug 02, 2025 am 06:26 AM

defer用于在函數(shù)返回前執(zhí)行指定操作,如清理資源;參數(shù)在defer時(shí)立即求值,函數(shù)按后進(jìn)先出(LIFO)順序執(zhí)行;1.多個(gè)defer按聲明逆序執(zhí)行;2.常用于文件關(guān)閉等安全清理;3.可修改命名返回值;4.即使發(fā)生panic也會(huì)執(zhí)行,適合用于recover;5.避免在循環(huán)中濫用defer,防止資源泄漏;正確使用可提升代碼安全性和可讀性。

比較Java構(gòu)建工具:Maven vs. Gradle 比較Java構(gòu)建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

Java并發(fā)公用事業(yè):執(zhí)行人員服務(wù)和叉/加入 Java并發(fā)公用事業(yè):執(zhí)行人員服務(wù)和叉/加入 Aug 03, 2025 am 01:54 AM

ExecutorService適用于獨(dú)立任務(wù)的異步執(zhí)行,如I/O操作或定時(shí)任務(wù),使用線程池管理并發(fā),通過(guò)submit提交Runnable或Callable任務(wù),并用Future獲取結(jié)果,需注意無(wú)界隊(duì)列風(fēng)險(xiǎn)和顯式關(guān)閉線程池;2.Fork/Join框架專為可拆分的CPU密集型任務(wù)設(shè)計(jì),基于分治法和工作竊取算法,通過(guò)RecursiveTask或RecursiveAction實(shí)現(xiàn)任務(wù)遞歸拆分,由ForkJoinPool調(diào)度執(zhí)行,適合大數(shù)組求和、排序等場(chǎng)景,需合理設(shè)置拆分閾值避免開銷;3.選擇依據(jù):獨(dú)立任

如何使用Java中的觀察者模式? 如何使用Java中的觀察者模式? Aug 02, 2025 am 11:52 AM

該問題的明確答案是推薦使用自定義觀察者接口實(shí)現(xiàn)觀察者模式。1.雖然Java提供了Observable和Observer,但前者是類且已棄用,缺乏靈活性;2.現(xiàn)代推薦做法是定義函數(shù)式Observer接口,由Subject維護(hù)Observer列表并在狀態(tài)變化時(shí)通知所有觀察者;3.可結(jié)合Lambda表達(dá)式使用,提升代碼簡(jiǎn)潔性與可維護(hù)性;4.對(duì)于GUI或JavaBean場(chǎng)景,可選用PropertyChangeListener。因此,新項(xiàng)目應(yīng)采用自定義觀察者接口方案,它類型安全、易于測(cè)試且與現(xiàn)代Java特

See all articles