微信开发02----------消息结构的封装

Posted Huang路飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信开发02----------消息结构的封装相关的知识,希望对你有一定的参考价值。

  ​公众号服务器在接收到用户发送的请求消息后,可以通过返回特定的XML结构对消息进行响应

  http://mp.weixin.qq.com/wiki/1/6239b44c206cab9145b1d52c67e6c551.html

  2.1 响应消息基类编写

 

  1) 接收方帐号(收到的OpenID)  ToUserName

  2) 开发者微信号(OpenID)  FromUserName

  3) 消息创建时间 (整型new Date().getTime())  CreateTime

  4) 消息类型(text/music/news)  MsgType

  

package com.message;
/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日20:52:46
 */

public class BaseMessage {
        // 接收方帐号(收到的OpenID)
        private String ToUserName;
        // 开发者微信号
        private String FromUserName;
        // 消息创建时间 (整型)
        private long CreateTime;
        // 消息类型(text/music/news)
        private String MsgType;
        
        
        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;
        }


    }
View Code

 

  2.2 具体消息格式

    根据开发文档中规定的消息格式,我们还要为每种类型编写一个单独的类定义自己特有的属性并且继承上面的基类

   2.2.1 文本消息格式

      开发文档提供的回复XML格式,可知回复消息文本的时候还需要一个文本消息的内容 Content(长度不能超过2048字节,否则微信服务器会放弃响应,用户则收不到                  回复)

    

package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日20:59:27
 */
public class TextMessage extends BaseMessage {
    private String Content;

    public String getContent() {
        return Content;
    }

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

}
View Code

 

   2.2.2 图片消息回复

    

      可看出在回复图片消息的时候还需要一个MediaId。这里的ID是在回复图片、语音、视频等多媒体消息时都需要的,此ID获取的方式为需要预先上传多媒体文件到微信服务器,上传成功后微信服务器会返回多媒体文件的ID。后面再讲具体实现方式。

package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:21:46
 */
public class ImageMessage extends BaseMessage {
    private Image Image;

    public Image getImage() {
        return Image;
    }

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

}


package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:20:53
 */
public class Image {
    private String MediaId;

    public String getMediaId() {
        return MediaId;
    }

    public void setMediaId(String mediaId) {
        MediaId = mediaId;
    }



}
View Code

 

  2.2.3 语音消息 (同图片消息格式)

  

  

package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:26:01
 */
public class Voice {
    //媒体文件id
    private String MediaId;

    public String getMediaId() {
        return MediaId;
    }

    public void setMediaId(String mediaId) {
        MediaId = mediaId;
    }
    
}


package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:26:16
 */
public class VoiceMessage extends BaseMessage {
    private Voice Voice;

    public Voice getVoice() {
        return Voice;
    }

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

}
View Code

    2.2.4 视频消息回复(同图片消息格式)

    

      

package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data  2016年6月18日21:28:05
 */
public class VideoMessage extends BaseMessage {
    //语音
    private Video Video;

    public Video getVideo() {
        return Video;
    }

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

}


package com.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:28:21
 */
public class Video {
    //媒体文件id
    private String MediaId;
    

    public String getMediaId() {
        return MediaId;
    }

    public void setMediaId(String mediaId) {
        MediaId = mediaId;
    }

}
View Code

    2.2.5 图文消息的回复

     图文消息包括多种消息,以下为开发文档提供的格式

    

    

package com.message;

import java.util.List;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:31:41
 */
public class NewsMessage extends BaseMessage {
    private int ArticleCount;
    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.message;

/**
 * 
 * @author 黄路飞
 *
 * @data 2016年6月18日21:31:59
 */
public class Article {
    private String Title;
    private String Description;
    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;
    }
    
    

}
View Code

    

 

    

    

    

 

以上是关于微信开发02----------消息结构的封装的主要内容,如果未能解决你的问题,请参考以下文章

微信接口开发之高级篇系列微信权限封装类

微信公众平台开发(26) 消息回复总结

微信学习总结 04 消息及消息处理工具的封装

微信公众平台网页开发实战--1.微信分享一个网页到朋友圈

微信开发 模板消息发送

夺命雷公狗---微信开发25----客服消息接口基础和推送语音