亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

第三篇:微信公眾平臺開發實戰Java版之請求消息,響應消息以及事件消息類的封裝

2019-11-14 15:32:13
字體:
來源:轉載
供稿:網友

微信服務器和第三方服務器之間究竟是通過什么方式進行對話的?

下面,我們先看下圖:

 

其實我們可以簡單的理解:

(1)首先,用戶向微信服務器發送消息;

(2)微信服務器接收到用戶的消息處理之后,通過開發者配置的URL和Token 來找到第三方服務器,并以xml形式向第三方服務器發送消息。

(3)第三方服務器獲取這些消息之后,需要按照微信服務器傳過來的XML的語言進行解析,獲取到信息之后,根據用戶的需求,提供服務,然后封裝成XML數據,傳回到微信服務器上去。

(4)微信服務器解析這些XML,并把相應的內容還回給用戶。

基本就結束了一個基本的請求與相應。

 

 

一、封裝請求信息

?

當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上。

各消息類型的推送XML數據包結構如下:

 

 ----------------------------------------------------------------------------------------------------------------------------------------

文本消息 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName>  <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>參數    描述ToUserName    開發者微信號FromUserName    發送方帳號(一個OpenID)CreateTime    消息創建時間 (整型)MsgType    textContent    文本消息內容MsgId    消息id,64位整型 圖片消息 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId> </xml>參數    描述ToUserName    開發者微信號FromUserName    發送方帳號(一個OpenID)CreateTime    消息創建時間 (整型)MsgType    imagePicUrl    圖片鏈接MediaId    圖片消息媒體id,可以調用多媒體文件下載接口拉取數據。MsgId    消息id,64位整型 語音消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime><MsgType><![CDATA[voice]]></MsgType><MediaId><![CDATA[media_id]]></MediaId><Format><![CDATA[Format]]></Format><MsgId>1234567890123456</MsgId></xml>參數    描述ToUserName    開發者微信號FromUserName    發送方帳號(一個OpenID)CreateTime    消息創建時間 (整型)MsgType    語音為voiceMediaId    語音消息媒體id,可以調用多媒體文件下載接口拉取數據。Format    語音格式,如amr,speex等MsgID    消息id,64位整型 請注意,開通語音識別后,用戶每次發送語音給公眾號時,微信會在推送的語音消息XML數據包中,增加一個Recongnition字段 (注:由于客戶端緩存,開發者開啟或者關閉語音識別功能,對新關注者立刻生效,對已關注用戶需要24小時生效。開發者可以重新關注此帳號進行測試)。開啟 語音識別后的語音XML數據包如下:<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime><MsgType><![CDATA[voice]]></MsgType><MediaId><![CDATA[media_id]]></MediaId><Format><![CDATA[Format]]></Format><Recognition><![CDATA[騰訊微信團隊]]></Recognition><MsgId>1234567890123456</MsgId></xml>多出的字段中,Format為語音格式,一般為amr,Recognition為語音識別結果,使用UTF8編碼。視頻消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime><MsgType><![CDATA[video]]></MsgType><MediaId><![CDATA[media_id]]></MediaId><ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId><MsgId>1234567890123456</MsgId></xml>參數    描述ToUserName    開發者微信號FromUserName    發送方帳號(一個OpenID)CreateTime    消息創建時間 (整型)MsgType    視頻為videoMediaId    視頻消息媒體id,可以調用多媒體文件下載接口拉取數據。ThumbMediaId    視頻消息縮略圖的媒體id,可以調用多媒體文件下載接口拉取數據。MsgId    消息id,64位整型 小視頻消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime><MsgType><![CDATA[shortvideo]]></MsgType><MediaId><![CDATA[media_id]]></MediaId><ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId><MsgId>1234567890123456</MsgId></xml>參數    描述ToUserName    開發者微信號FromUserName    發送方帳號(一個OpenID)CreateTime    消息創建時間 (整型)MsgType    小視頻為shortvideoMediaId    視頻消息媒體id,可以調用多媒體文件下載接口拉取數據。ThumbMediaId    視頻消息縮略圖的媒體id,可以調用多媒體文件下載接口拉取數據。MsgId    消息id,64位整型 地理位置消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1351776360</CreateTime><MsgType><![CDATA[location]]></MsgType><Location_X>23.134521</Location_X><Location_Y>113.358803</Location_Y><Scale>20</Scale><Label><![CDATA[位置信息]]></Label><MsgId>1234567890123456</MsgId></xml> 參數    描述ToUserName    開發者微信號FromUserName    發送方帳號(一個OpenID)CreateTime    消息創建時間 (整型)MsgType    locationLocation_X    地理位置維度Location_Y    地理位置經度Scale    地圖縮放大小Label    地理位置信息MsgId    消息id,64位整型 鏈接消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1351776360</CreateTime><MsgType><![CDATA[link]]></MsgType><Title><![CDATA[公眾平臺官網鏈接]]></Title><Description><![CDATA[公眾平臺官網鏈接]]></Description><Url><![CDATA[url]]></Url><MsgId>1234567890123456</MsgId></xml> 參數    描述ToUserName    接收方微信號FromUserName    發送方微信號,若為普通用戶,則是一個OpenIDCreateTime    消息創建時間MsgType    消息類型,linkTitle    消息標題Description    消息描述Url    消息鏈接MsgId    消息id,64位整型 
View Code

----------------------------------------------------------------------------------------------------------------------------------------

詳細的介紹可以參照  官網介紹

 

其中用戶可以向微信服務器發送的消息類型大概可以分為:文本消息,圖片消息語音消息視頻消息,小視頻消息地理位置消息,鏈接消息。

根據觀察可以知道這些消息中,都會傳回來這些公共的字段如:

ToUserName(開發者微信號);

FromUserName(發送方帳 號,OPEN_ID);

CreateTime(消息的創建時間);

MsgType(消息類型);

MsgId(消息ID)。

我們把這些封裝成一個基類,然后 不同的部分,分別封裝為各自的類,這樣提高代碼的重用性。

 

這個請求消息的基類是 :BaseMessage :

 

package com.souvc.weixin.message.req;/*** 類名: BaseMessage </br>* 描述: 請求消息的基類 </br>* 開發人員: souvc</br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */public class BaseMessage {    // 開發者微信號    PRivate String ToUserName;    // 發送方帳號(一個OpenID)    private String FromUserName;    // 消息創建時間 (整型)    private long CreateTime;    // 消息類型(text/image/location/link)    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;    }}

 

 

(1)文本消息:Content 文本消息內容:

 

package com.souvc.weixin.message.req;/*** 類名: TextMessage </br>* 描述: 請求消息之文本消息 </br>* 開發人員: souvc </br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */public class TextMessage extends BaseMessage {    // 消息內容    private String Content;    public String getContent() {        return Content;    }    public void setContent(String content) {        Content = content;    }}

 

(2)圖片消息:

PicUrl圖片鏈接
MediaId圖片消息媒體id,可以調用多媒體文件下載接口拉取數據。

 

 

package com.souvc.weixin.message.req;/*** 類名: ImageMessage </br>* 描述: 請求消息之圖片消息 </br>* 開發人員: souvc </br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */public class ImageMessage extends BaseMessage {    // 圖片鏈接    private String PicUrl;    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;    }}

 

 

 

(3) 語音消息:

MediaId語音消息媒體id,可以調用多媒體文件下載接口拉取數據。
Format語音格式,如amr,speex等

 

 

package com.souvc.weixin.message.req;/*** 類名: VoiceMessage </br>* 描述: 請求消息之語音消息 </br>* 開發人員: souvc </br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */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;    }}

 

 

 

(4)視頻消息:

MediaId視頻消息媒體id,可以調用多媒體文件下載接口拉取數據。
ThumbMediaId視頻消息縮略圖的媒體id,可以調用多媒體文件下載接口拉取數據。

 

package com.souvc.weixin.message.req;/*** 類名: VideoMessage </br>* 描述: 請求消息之視頻消息 </br>* 開發人員: souvc </br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */public class VideoMessage  extends BaseMessage{    // 媒體ID    private String MediaId;    // 語音格式    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; } }

 

 

(5)小視頻消息:

MediaId視頻消息媒體id,可以調用多媒體文件下載接口拉取數據。
ThumbMediaId視頻消息縮略圖的媒體id,可以調用多媒體文件下載接口拉取數據。

 

 

(6) 地理位置消息:

Location_X地理位置維度
Location_Y地理位置經度
Scale地圖縮放大小
Label地理位置信息

 

package com.souvc.weixin.message.req;/*** 類名: LocationMessage </br>* 描述: 請求消息之地理位置消息 </br>* 開發人員:souvc</br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */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;    }}

 

 

(7) 鏈接消息:

Title消息標題
Description消息描述
Url消息鏈接

 

 

package com.souvc.weixin.message.req;/*** 類名: LinkMessage </br>* 描述: 請求消息之鏈接消息 </br>* 開發人員: souvc </br>* 創建時間:  Sep 29, 2015 </br>* 發布版本:V1.0  </br> */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;    }}

 

 

 

二、封裝事件

 

在微信用戶和公眾號產生交互的過程中,用戶的某些操作會使得微信服務器通過事件推送的形式通知到開發者在開發者中心處設置的服務器地址,從而開發者可以獲取到該信息。

事件的數據格式為:

 

關注/取消關注事件用戶在關注與取消關注公眾號時,微信會把這個事件推送到開發者填寫的URL。方便開發者給用戶下發歡迎消息或者做帳號的解綁。 微信服務器在五秒內收不到響應會斷掉連接,并且重新發起請求,總共重試三次 關于重試的消息排重,推薦使用FromUserName + CreateTime 排重。 假如服務器無法保證在五秒內處理并回復,可以直接回復空串,微信服務器不會對此作任何處理,并且不會發起重試。 推送XML數據包示例: <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event></xml>參數說明: 參數 描述 ToUserName  開發者微信號  FromUserName  發送方帳號(一個OpenID)  CreateTime  消息創建時間 (整型)  MsgType  消息類型,event  Event  事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)  使用網頁調試工具調試該接口 掃描帶參數二維碼事件用戶掃描帶場景值二維碼時,可能推送以下兩種事件: 1. 如果用戶還未關注公眾號,則用戶可以關注公眾號,關注后微信會將帶場景值關注事件推送給開發者。 2. 如果用戶已經關注公眾號,則微信會將帶場景值掃描事件推送給開發者。 1. 用戶未關注時,進行關注后的事件推送 推送XML數據包示例: <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event><EventKey><![CDATA[qrscene_123123]]></EventKey><Ticket><![CDATA[TICKET]]></Ticket></xml>參數說明: 參數 描述 ToUserName  開發者微信號  FromUserName  發送方帳號(一個OpenID)  CreateTime  消息創建時間 (整型)  MsgType  消息類型,event  Event  事件類型,subscribe  EventKey  事件KEY值,qrscene_為前綴,后面為二維碼的參數值  Ticket  二維碼的ticket,可用來換取二維碼圖片  2. 用戶已關注時的事件推送 推送XML數據包示例: <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[SCAN]]></Event><EventKey><![CDATA[SCENE_VALUE]]></EventKey><Ticket><![CDATA[TICKET]]></Ticket></xml>參數說明: 參數 描述 ToUserName  開發者微信號  FromUserName  發送方帳號(一個OpenID)  CreateTime  消息創建時間 (整型)  MsgType  消息類型,event  Event  事件類型,SCAN  EventKey  事件KEY值,是一個32位無符號整數,即創建二維碼時的二維碼scene_id  Ticket  二維碼的ticket,可用來換取二維碼圖片  使用網頁調試工具調試該接口 上報地理位置事件用戶同意上報地理位置后,每次進入公眾號會話時,都會在進入時上報地理位置,或在進入會話后每5秒上報一次地理位置,公眾號可以在公眾平臺網站中修改以上設置。上報地理位置時,微信會將上報地理位置事件推送到開發者填寫的URL。 推送XML數據包示例: <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[LOCATION]]></Event><Latitude>23.137466</Latitude><Longitude>113.352425</Longitude><Precision>119.385040</Precision></xml>參數說明: 參數 描述 ToUserName  開發者微信號  FromUserName  發送方帳號(一個OpenID)  CreateTime  消息創建時間 (整型)  MsgType  消息類型,event  Event  事件類型,LOCATION  Latitude  地理位置緯度  Longitude  地理位置經度  Precision  地理位置精度  使用網頁調試工具調試該接口 自定義菜單事件用戶點擊自定義菜單后,微信會把點擊事件推送給開發者,請注意,點擊菜單彈出子菜單,不會產生上報。  點擊菜單拉取消息時的事件推送 推送XML數據包示例: <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[CLICK]]></Event><EventKey><![CDATA[EVENTKEY]]></EventKey></xml>參數說明: 參數 描述 ToUserName  開發者微信號  FromUserName  發送方帳號(一個OpenID)  CreateTime  消息創建時間 (整型)  MsgType  消息類型,event  Event  事件類型,CLICK  EventKey  事件KEY值,與自定義菜單接口中KEY值對應   點擊菜單跳轉鏈接時的事件推送 推送XML數據包示例: <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[VIEW]]></Event><EventKey><![CDATA[www.QQ.com]]></EventKey></xml>參數說明: 參數 描述 ToUserName  開發者微信號  FromUserName  發送方帳號(一個OpenID)  CreateTime  消息創建時間 (整型)  MsgType  消息類型,event  Event  事件類型,VIEW  EventKey  事件KEY值,設置的跳轉URL  
View Code

 

詳細可以參照   官網

 

 事件基類封裝

 

package com.souvc.weixin.message.event;/*** 類名: BaseEvent </br>* 描述: 事件基類</br>* 開發人員: souvc</br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class BaseEvent {    // 開發者微信號    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;    }}

 

 

 (1)關注/取消關注事件

 

package com.souvc.weixin.message.event;/*** 類名: SubscribeEvent </br>* 描述: 關注/取消關注事件 </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class SubscribeEvent extends BaseEvent {}

 

 

(2)掃描帶參數二維碼事件

 

package com.souvc.weixin.message.event;/*** 類名: QRCodeEvent </br>* 描述: 掃描帶參數二維碼事件 </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class QRCodeEvent extends BaseEvent {    // 事件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;    }}

 

 

(3)上報地理位置事件

 

package com.souvc.weixin.message.event;/*** 類名: LocationEvent </br>* 描述: 上報地理位置事件 </br>* 開發人員: liuhf </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class LocationEvent extends BaseEvent {    // 地理位置緯度    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;    }}

 

 

(4)自定義菜單事件

 

 

package com.souvc.weixin.message.event;/*** 類名: MenuEvent </br>* 描述: 自定義菜單事件 </br>* 開發人員: liuhf </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class MenuEvent extends BaseEvent {    // 事件KEY值,與自定義菜單接口中KEY值對應    private String EventKey;    public String getEventKey() {        return EventKey;    }    public void setEventKey(String eventKey) {        EventKey = eventKey;    }}

 

 

三、封裝響應消息

 

     當用戶發送消息給公眾號時(或某些特定的用戶操作引發的事件推送時),會產生一個POST請求,開發者可以在響應包(Get)中返回特定XML結構,來對 該消息進行響應(現支持回復文本、圖片、圖文、語音、視頻、音樂)。嚴格來說,發送被動響應消息其實并不是一種接口,而是對微信服務器發過來消息的一次回 復。

    各消息類型需要的XML數據包結構如下:

    

 回復文本消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>參數     是否必須     描述ToUserName     是     接收方帳號(收到的OpenID)FromUserName     是     開發者微信號CreateTime     是     消息創建時間 (整型)MsgType     是     textContent     是     回復的消息內容(換行:在content中能夠換行,微信客戶端就支持換行顯示)回復圖片消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>參數     是否必須     說明ToUserName     是     接收方帳號(收到的OpenID)FromUserName     是     開發者微信號CreateTime     是     消息創建時間 (整型)MsgType     是     imageMediaId     是     通過素材管理接口上傳多媒體文件,得到的id。回復語音消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[voice]]></MsgType><Voice><MediaId><![CDATA[media_id]]></MediaId></Voice></xml>參數     是否必須     說明ToUserName     是     接收方帳號(收到的OpenID)FromUserName     是     開發者微信號CreateTime     是     消息創建時間戳 (整型)MsgType     是     語音,voiceMediaId     是     通過素材管理接口上傳多媒體文件,得到的id回復視頻消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[media_id]]></MediaId><Title><![CDATA[title]]></Title><Description><![CDATA[description]]></Description></Video> </xml>參數     是否必須     說明ToUserName     是     接收方帳號(收到的OpenID)FromUserName     是     開發者微信號CreateTime     是     消息創建時間 (整型)MsgType     是     videoMediaId     是     通過素材管理接口上傳多媒體文件,得到的idTitle     否     視頻消息的標題Description     否     視頻消息的描述回復音樂消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[TITLE]]></Title><Description><![CDATA[DESCRIPTION]]></Description><MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl><HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl><ThumbMediaId><![CDATA[media_id]]></ThumbMediaId></Music></xml>參數     是否必須     說明ToUserName     是     接收方帳號(收到的OpenID)FromUserName     是     開發者微信號CreateTime     是     消息創建時間 (整型)MsgType     是     musicTitle     否     音樂標題Description     否     音樂描述MusicURL     否     音樂鏈接HQMusicUrl     否     高質量音樂鏈接,WIFI環境優先使用該鏈接播放音樂ThumbMediaId     否     縮略圖的媒體id,通過素材管理接口上傳多媒體文件,得到的id回復圖文消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title><![CDATA[title1]]></Title> <Description><![CDATA[description1]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item><item><Title><![CDATA[title]]></Title><Description><![CDATA[description]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item></Articles></xml> 參數     是否必須     說明ToUserName     是     接收方帳號(收到的OpenID)FromUserName     是     開發者微信號CreateTime     是     消息創建時間 (整型)MsgType     是     newsArticleCount     是     圖文消息個數,限制為10條以內Articles     是     多條圖文消息信息,默認第一個item為大圖,注意,如果圖文數超過10,則將會無響應Title     否     圖文消息標題Description     否     圖文消息描述PicUrl     否     圖片鏈接,支持JPG、PNG格式,較好的效果為大圖360*200,小圖200*200Url     否     點擊圖文消息跳轉鏈接 
View Code

 

詳細可以查看  官網

 

同樣,把消息回復中定義的所有消息都有的字段提取出來,封裝成一個基類,

這些公有的字段包括:

ToUserName(接收方帳號,用戶的OPEN_ID);

FromUserName(開發者的微信號);

CreateTime(消 息的創建時間);

MsgType(消息類型);

FuncFlag(消息的星標標識)。

 

響應消息的基類BaseMessage:

 

 

package com.souvc.weixin.message.resp;/*** 類名: BaseMessage </br>* 描述: 消息基類(公眾帳號 -> 普通用戶) </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class BaseMessage {    // 接收方帳號(收到的OpenID)    private String ToUserName;    // 開發者微信號    private String FromUserName;    // 消息創建時間 (整型)    private long CreateTime;    // 消息類型    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;    }}

 

 

(1)回復文本消息

 

package com.souvc.weixin.message.resp;/*** 類名: TextMessage </br>* 描述: 文本消息 </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class TextMessage extends BaseMessage {    // 回復的消息內容    private String Content;    public String getContent() {        return Content;    }    public void setContent(String content) {        Content = content;    }}

 

 

(2)回復圖片消息

 

package com.souvc.weixin.message.resp;/*** 類名: Image </br>* 描述: 圖片 </br>* 開發人員:souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class Image {        private String MediaId;    public String getMediaId() {        return MediaId;    }    public void setMediaId(String mediaId) {        MediaId = mediaId;    }}

 

package com.souvc.weixin.message.resp;/*** 類名: ImageMessage </br>* 描述: 圖片消息</br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class ImageMessage extends BaseMessage {        private Image Image;    public Image getImage() {        return Image;    }    public void setImage(Image image) {        Image = image;    }}

 

 

(3)回復語音消息

 

 

package com.souvc.weixin.message.resp;/*** 類名: Voice </br>* 描述: 語音model </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class Voice {    // 媒體文件id    private String MediaId;    public String getMediaId() {        return MediaId;    }    public void setMediaId(String mediaId) {        MediaId = mediaId;    }}

 

package com.souvc.weixin.message.resp;/*** 類名: VoiceMessage </br>* 描述: 語音消息</br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class VoiceMessage extends BaseMessage {    // 語音    private Voice Voice;    public Voice getVoice() {        return Voice;    }    public void setVoice(Voice voice) {        Voice = voice;    }}

 

 

(4)回復視頻消息

 

package com.souvc.weixin.message.resp;/*** 類名: Video </br>* 描述: 視頻model </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class Video {    // 媒體文件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.souvc.weixin.message.resp;/*** 類名: VideoMessage </br>* 描述: 視頻消息 </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class VideoMessage extends BaseMessage {    // 視頻    private Video Video;    public Video getVideo() {        return Video;    }    public void setVideo(Video video) {        Video = video;    }}

 

 

(5)回復音樂消息

 

package com.souvc.weixin.message.resp;/*** 類名: Music </br>* 描述: 音樂model </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class Music {    // 音樂標題    private String Title;    // 音樂描述    private String Description;    // 音樂鏈接    private String MusicUrl;    // 高質量音樂鏈接,WIFI環境優先使用該鏈接播放音樂    private String HQMusicUrl;    // 縮略圖的媒體id,通過上傳多媒體文件得到的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 musicUrl) {        HQMusicUrl = musicUrl;    }    public String getThumbMediaId() {        return ThumbMediaId;    }    public void setThumbMediaId(String thumbMediaId) {        ThumbMediaId = thumbMediaId;    }}

 

package com.souvc.weixin.message.resp;/*** 類名: MusicMessage </br>* 描述: 音樂消息 </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class MusicMessage extends BaseMessage {    // 音樂    private Music Music;    public Music getMusic() {        return Music;    }    public void setMusic(Music music) {        Music = music;    }}

 

(6) 回復圖文消息

package com.souvc.weixin.message.resp;/*** 類名: Article </br>* 描述: 圖文model </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class Article {    // 圖文消息名稱    private String Title;    // 圖文消息描述    private String Description;    // 圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80    private String PicUrl;    // 點擊圖文消息跳轉鏈接    private String Url;    public String getTitle() {        return Title;    }    public void setTitle(String title) {        Title = title;    }    public String getDescription() {        return null == Description ? "" : Description;    }    public void setDescription(String description) {        Description = description;    }    public String getPicUrl() {        return null == PicUrl ? "" : PicUrl;    }    public void setPicUrl(String picUrl) {        PicUrl = picUrl;    }    public String getUrl() {        return null == Url ? "" : Url;    }    public void setUrl(String url) {        Url = url;    }}

 

package com.souvc.weixin.message.resp;import java.util.List;/*** 類名: NewsMessage </br>* 描述: 文本消息 </br>* 開發人員: souvc </br>* 創建時間:  2015-9-30 </br>* 發布版本:V1.0  </br> */public class NewsMessage extends BaseMessage {    // 圖文消息個數,限制為10條以內    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;    }}

 

封裝結束。

 

 

為了方便,提供一下這些類的源碼

 

 

http://yunpan.cn/cL7KUQ4Q5tMeh  訪問密碼 75e7

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品一区| 亚州av一区二区| 亚洲国产欧美一区二区三区同亚洲| 精品久久久久久久久中文字幕| 亚洲成人黄色网| 午夜免费在线观看精品视频| 成人高清视频观看www| 亚洲japanese制服美女| 国产一区二区三区精品久久久| 色妞在线综合亚洲欧美| 欧美尤物巨大精品爽| 亚洲黄色在线观看| 成人中文字幕+乱码+中文字幕| 国产欧美日韩中文字幕在线| 91成人国产在线观看| 国产精品91久久久久久| 成人久久18免费网站图片| 日韩高清电影免费观看完整版| 亚洲欧洲美洲在线综合| 亚洲国产成人精品女人久久久| 亚洲第一福利视频| 粉嫩av一区二区三区免费野| 亚洲精品网址在线观看| 欧美日韩在线视频一区二区| 亚洲影院色无极综合| 一本一本久久a久久精品综合小说| 久久精品99久久久香蕉| 国产精品久久久久久久午夜| 亚洲欧美日韩高清| 国产午夜精品视频免费不卡69堂| 91九色单男在线观看| 亚洲国产91精品在线观看| 日本精品中文字幕| 国产精品丝袜视频| 91嫩草在线视频| 日韩美女免费观看| 欧美激情国产高清| 91免费视频国产| 亚洲欧美日韩久久久久久| 久久久久久18| 国产精品一区二区久久精品| 欧美成人免费大片| 亚洲精品xxxx| 亚洲直播在线一区| 性日韩欧美在线视频| 色哟哟亚洲精品一区二区| 国产精品久久久久久五月尺| 51午夜精品视频| 国产精品91久久久久久| 久久乐国产精品| 中文字幕在线成人| 欧美成人全部免费| 中文字幕日韩精品有码视频| 亚洲欧美日韩精品久久| 秋霞午夜一区二区| 亚洲精品在线视频| 亚洲精品自拍偷拍| 最新日韩中文字幕| 久久久久久高潮国产精品视| 日韩av在线免费播放| 欧美精品激情视频| 亚洲人午夜精品| 精品久久久久久久大神国产| 韩日精品中文字幕| 在线免费看av不卡| 久久久久久久久国产精品| 美女福利精品视频| 91av免费观看91av精品在线| 国产精品欧美激情| 综合久久五月天| 国产精品第10页| 狠狠久久亚洲欧美专区| 日韩乱码在线视频| 国产精品第3页| 亚洲精品日韩欧美| 欧美大片免费观看在线观看网站推荐| 国产精品ⅴa在线观看h| 欧美久久精品午夜青青大伊人| 全亚洲最色的网站在线观看| 日韩一级裸体免费视频| 久久精品国产亚洲一区二区| 国产美女扒开尿口久久久| 亚洲国产古装精品网站| 国产精品女视频| 久久久免费观看| 日韩中文字在线| 日韩欧美亚洲成人| 久久久精品视频成人| 久久成人18免费网站| 精品中文字幕视频| 日韩中文有码在线视频| 欧美第一黄网免费网站| 亚洲视频电影图片偷拍一区| 国产成人涩涩涩视频在线观看| 综合国产在线观看| 日韩中文字幕网站| 国产精品爽黄69天堂a| 成人黄色免费在线观看| 91色视频在线导航| 日本一区二区三区在线播放| 久久久精品2019中文字幕神马| 色噜噜狠狠色综合网图区| 日韩中文字幕在线观看| 日韩69视频在线观看| 日韩h在线观看| 久久色在线播放| 国产亚洲精品美女久久久久| 久久久国产视频91| 国产精品扒开腿做爽爽爽的视频| 国产精品欧美日韩| 中文字幕国产亚洲2019| 日韩av电影在线网| 久久天天躁狠狠躁夜夜躁| 国产精品一区专区欧美日韩| 日本成人激情视频| 国产精品大片wwwwww| 疯狂做受xxxx高潮欧美日本| 久久亚洲精品国产亚洲老地址| 亚洲成人a级网| 午夜精品一区二区三区在线视| 精品国产美女在线| 免费97视频在线精品国自产拍| 国产精品麻豆va在线播放| 色悠久久久久综合先锋影音下载| 日韩精品在线视频| 成人国产精品日本在线| 欧美日韩成人网| 精品动漫一区二区三区| 亚洲图片在区色| 久久久久免费视频| 日本一区二三区好的精华液| 欧美性高跟鞋xxxxhd| 美女精品视频一区| 久久精品99久久久香蕉| 色偷偷av亚洲男人的天堂| 国产精品麻豆va在线播放| 国产欧美亚洲精品| 亚洲成人av在线| 日韩av影视综合网| 中文字幕久热精品在线视频| 国产精品视频中文字幕91| 久久视频在线看| 亚洲美女在线看| 国产成人在线亚洲欧美| 亚洲新中文字幕| 国产成人亚洲综合91| www.久久草.com| 丝袜亚洲欧美日韩综合| 日韩三级成人av网| 亚洲欧美在线免费观看| 欧美二区在线播放| 97av在线播放| 亚洲天堂第二页| 亚洲成av人乱码色午夜| 日韩精品视频在线观看网址| 91视频国产精品| 97久久精品视频| 国产精品青草久久久久福利99| 亚洲欧美国产日韩中文字幕| 欧美性猛交xxx| 92看片淫黄大片看国产片| 欧美丰满少妇xxxx| 国语对白做受69| 91免费看片网站|