上一節中,我們講到微信信息的收發,并對之前的服務器開發者URL的驗證地址的代碼做了一個修改,讓我們的項目可以同時驗證微信開發者的URL,也可以接收消息的進入,上一節中,我只是簡單的把消息收到后,然后直接就返回文本消息,代碼的可閱讀性不夠,那么,我們今天要把消息的內容,也要封裝成一個類,增強可讀性。如果對我的文章感興趣,歡迎訂閱我的頭條號,一點熱,
上一節快速入口
java使用開發微信公眾號的消息收發功能
那么我們開始設計我們的類
從微信的文檔,我們可以看到,微信消息包含了文本消息、 圖片消息、語音消息、視頻消息、小視頻消息、地理位置消息、鏈接消息還有事件推送消息java實現系統推送消息,那么我們直接提取公共的參數,做一個基類,由于我在上級章節中,使用了map來存放接收的數據,同時也使用Map來對數據進行CDATA來拼接XML的字符串數據輸出,那么我們這個基類也使用Map集合來做構造函數和轉換方法。我們將接收方帳號(收到的),開發者微信號,是消息創建時間 ,消息類型,MsgId消息ID放在基類。
是text
com..model;
java.util.;
java.util.Map;
/**
* by on 16/7/30.
*/
class {
;
;
;
;
MsgId;
() {
;
}
void ( ) {
= ;
}
() {
;
}
void ( ) {
= ;
}
() {
;
}
void ( ) {
= ;
}
() {
;
}
void ( ) {
= ;
}
() {
MsgId;
}
void ( msgId) {
MsgId = msgId;
}
() {
}
( , , , , msgId) {
= ;
= ;
= ;
= ;
MsgId = msgId;
}
//寫一個參數為Map的構造函數
(Map info) {
this.=info.get("");
this.MsgId=info.get("MsgId");
this.=info.get("");
this.=info.get("");
this.=info.get("");
}
//將類的屬性輸出為Map
Map (){
Map map=new ();
map.put("",this.());
map.put("",this.());
map.put("",this.());
map.put("",this.());
map.put("MsgId",this.());
map;
}
}
做好了基類,我們可以定義一個文本消息類,它繼承基本.它里面的屬性就多一個消息的內容,我們定義為。
/**
* by on 16/7/30.
*/
class {
;
() {
;
}
void ( ) {
= ;
}
() {
super();
}
( , , , , msgId, ) {
super(, , , , msgId);
= ;
}
(Map info) {
super(info);
this.=info.get("");
}
Map (){
Map map=new ();
map.put("",this.);
Map map2=super.();
if (map!=null){
map.(map2);
}
map;
}
}
接著我們對我們原來的進行修改,這里主要是實現,用戶發送消息后,我們程序根據當前用戶名,自動回復一段內容給發送者。然后這里主要是將消息變成我們的類。
@
@(value = "/wx/", = "text/plain;=utf-8")
index( ) {
//
=.();
.out.print(+"?");
if (.("GET")) {
//此處省略了驗證token的步驟
else {
Map =new ();
Map =new ();
jb = new ();
line = null;
= null;
try {
= .();
while ((line = .()) != null)
{
jb.(line);
}
=.(jb.());
=new ();
.out.print("helo,"+.()+.());
=new ();
.("你好,");
.(.());
.(.());
.(.()+"10");
.(.());
=.();
.(,true);
}
catch ( e) {
e.();
}
catch ( e) {
e.();
}
"";
}
}
最后我們在公眾號測試一下,我們隨便輸入我們的內容,發現返回的數據,就是我們在代碼輸入的內容。結果正確java實現系統推送消息,不過這里要注意的是,我的文本消息而不是鏈接消息。
今天就講到這里,歡迎繼續關注我的頭條號:一點熱,如果有什么問題,歡迎留言咨詢,我看到之后會第一時間回復大家的。,也歡迎收藏與轉發,如果需要轉載到其他網站,請與我聯系。