首頁 微信小程式 微信開發 微信二次開發之各類型訊息封裝

微信二次開發之各類型訊息封裝

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

這篇文章主要為大家詳細介紹了Java微信二次開發第三篇,Java微信各類型訊息封裝,具有一定的參考價值,有興趣的小夥伴們可以參考一下

本文實例為大家分享了Java微信各種類型訊息的封裝,供大家參考,具體內容如下

#第一步:找到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:图片的实体类
 */
public class Image {
 //图片媒体ID
 private String MediaId;
 
 public String getMediaId() {
 return MediaId;
 }
 public void setMediaId(String mediaId) {
 MediaId = mediaId;
 }
}
登入後複製

第二步:找到com.wtz.message.response包,新類別ImageMes​​sage.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 {
 //图片对象
 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:视频的实体类
 */
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;
 }
}
登入後複製

第四步:找到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{
 //视频对象
 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:语音消息实体类
 */
public class Voice {
 //语音媒体编号
 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:语音消息类
 */
public class VoiceMessage extends BaseMessage{
 //语音对象
 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:音乐消息实体类
 */
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;
 }
}
登入後複製

第八步:找到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{
 //音乐对象
 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:图文实体类</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;
 }
}
登入後複製

第十個步驟:找到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{
 //图文条数
 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;
 }
}
登入後複製

第十一步:新套件com.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:请求消息基类(普通用户->公众账号)</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;
 }
}
登入後複製

第十二步:找到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{
 //消息内容
 private String Content;

 public String getContent() {
 return Content;
 }

 public void setContent(String content) {
 Content = content;
 }
}
登入後複製

第十三步:找到com.wtz.message.request包,新類別ImageMes​​sage.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:语音消息类</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;
 }
}
登入後複製

第十五步:找到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;
 //地理位置经度
 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 {
 //消息标题
 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;
 }
}
登入後複製

第十八步:新包com.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:基础事件消息类</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;
 }
}
登入後複製

第十九步:找到套件com.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:扫描带参数二维码事件类</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;
 } 
}
登入後複製

#步驟二十步:找到套件com.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:关注/取消关注事件类</p>
 */
public class SubscribeEventMessage extends BaseEventMessage{
 
}
登入後複製

第二十一步:找到套件com.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值对应
 private String EventKey;

 public String getEventKey() {
 return EventKey;
 }

 public void setEventKey(String eventKey) {
 EventKey = eventKey;
 }
}
登入後複製

第二十二步驟:找到套件com.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:上报地理位置事件类</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;
 }
}
登入後複製

#第二十三步:找到套件com.wtz.util下的MessageUtil.java類,修改這個類別添加請求和回應的各種訊息類型,事件類型,添加將各種類型訊息轉換成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 {
 //请求消息类型:文本
 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);
 }
}
登入後複製

第二十四步:找到套件com.wtz.util下的ProcessService.java類,修改dealRequest方法回應各種類型的消息

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格式的消息数据
 String respXml = "";
 //默认返回的文本消息内容
 String respContent = "未知的消息类型";
 //调用parseXml方法解析请求消息
 Map<String, String> requestMap;
 try {
  requestMap = MessageUtil.parseXml(request);
  //发送方账号
  String fromUserName = requestMap.get("FromUserName");
  //开发者微信号
  String toUserName = requestMap.get("ToUserName");
  //消息类型
  String MsgType = requestMap.get("MsgType");
  
  //回复文本消息
  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 = "您发送的是文本消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)){
  respContent = "您发送的是图片消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)){
  respContent = "您发送的是语音消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)){
  respContent = "您发送的是视频消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)){
  respContent = "您发送的是地理位置消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)){
  respContent = "您发送的是链接消息";
  }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)){
  //事件类型
  String eventType = requestMap.get("Event");
  if(eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)){
   respContent = "感谢您的关注";
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)){
   //TODO 取消订阅后用户不会再收到公众号发送的消息,因此不需要回复
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_SCAN)){
   //TODO 处理扫描带参数二维码事件
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)){
   //TODO 处理上报地理位置事件
  }else if(eventType.equals(MessageUtil.EVENT_TYPE_CLICK)){
   //TODO 处理菜单点击事件
  }
  }
  //设置文本消息的内容
  textMessage.setContent(respContent);
  //将文本消息对象转换成xml
  respXml = MessageUtil.messageToXml(textMessage);
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 
 return respXml;
 }
}
登入後複製

各種類型訊息封裝完成。

【相關推薦】

1. 微信公眾號平台原始碼 下載

2. 微信投票原始碼

以上是微信二次開發之各類型訊息封裝的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1674
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
公司安全軟件導致應用無法運行?如何排查和解決? 公司安全軟件導致應用無法運行?如何排查和解決? Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

幣圈最新消息APP排名推薦(2025權威發布) 幣圈最新消息APP排名推薦(2025權威發布) Apr 21, 2025 pm 09:33 PM

最佳的加密货币交易和分析平台包括:1. OKX:全球交易量第一,支持多种交易,提供AI行情分析和链上数据监控。2. 币安:全球最大交易所,提供深度行情和新币首发。3. 芝麻开门:以现货交易和OTC通道著称,提供自动化交易策略。4. CoinMarketCap:权威行情数据平台,覆盖20000 币种。5. CoinGecko:以社区情绪分析见长,提供DeFi和NFT趋势监控。6. 非小号:国内行情平台,提供A股与币市联动分析。7. 链上财经:专注区块链新闻,每日更新深度报道。8. 金色财经:24小

作曲家:通過AI的幫助開發PHP 作曲家:通過AI的幫助開發PHP Apr 29, 2025 am 12:27 AM

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

gate.io芝麻開門最新官方app地址 gate.io芝麻開門最新官方app地址 Apr 22, 2025 pm 01:03 PM

Gate.io官方APP可以通過以下方式下載:1. 訪問官方網站gate.io下載;2. 在App Store或Google Play搜索&quot;Gate.io&quot;下載。務必通過官方渠道下載以確保安全。

在Java的背景下,'平台獨立性”意味著什麼? 在Java的背景下,'平台獨立性”意味著什麼? Apr 23, 2025 am 12:05 AM

Java的平台獨立性是指編寫的代碼可以在任何安裝了JVM的平台上運行,無需修改。 1)Java源代碼編譯成字節碼,2)字節碼由JVM解釋執行,3)JVM提供內存管理和垃圾回收功能,確保程序在不同操作系統上運行。

加密貨幣交易所詐騙套路有哪些 加密貨幣交易所詐騙套路有哪些 Apr 20, 2025 pm 05:06 PM

加密貨幣交易所10大騙局速查表 常見騙局:虛假交易所、龐氏資金盤、合約操控、假的幣釣魚、客服詐騙等 識別要點:查監管牌照、核對合約地址、警惕高收益承諾 必做防護: 只用主流交易所(Binance/Coinbase) 啟用硬件錢包 拒絕共享私鑰/驗證碼 遇騙處理:立即截圖、凍結資產、平台舉報 報警 核心原則:任何索要密碼/轉賬的要求都是詐騙!

H5:HTML5的關鍵改進 H5:HTML5的關鍵改進 Apr 28, 2025 am 12:26 AM

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

Java如何正確生成並顯示微信小程序帶參數二維碼? Java如何正確生成並顯示微信小程序帶參數二維碼? Apr 19, 2025 pm 04:48 PM

在Java中生成帶參數的微信小程序二維碼並將其顯示在HTML頁面上,是一個常見的需求。本文將詳細探討如何使用J...

See all articles