Java微信公衆號開發(一)—— 簡述

1  公衆號與微信的區別

公衆號與微信的區別
  微信 公衆號
社交圈

大多都是認識的人小程序

可進行一對1、多對多交流tomcat

包括我的在內的更大的社交圈服務器

關注用戶大多都不認識微信

定位 主要用於聊天、朋友圈等我的娛樂

更加傾向於商業用途網絡

達到我的品牌的推廣、企業品牌宣傳等微信公衆平臺

使用方式 主要在手機端使用 主要在PC端使用
關注方式 能夠相互關注 只能被用戶關注

 

2  公衆號類型

公衆號類型通常分爲:dom

  • 訂閱號
  • 服務號
  • 企業號

注:我的只能註冊訂閱號,更詳細的信息請登陸微信公衆平臺查看。編輯器

3  微信公衆平臺

微信公衆品臺是騰訊爲了讓用戶申請和管理微信公衆帳號而推出的一個WEB平臺。工具

4  功能介紹

本節全部內容都是基於編輯模式(微信公衆號開發的兩種模式之一)進行的。ui

4.1  自動回覆

自動回覆分爲如下三種:

  • 被添加自動回覆:用戶剛關注該公衆號時回覆此文本
  • 消息自動回覆:任意消息回覆此文本(在關鍵詞回覆以後執行)
  • 關鍵詞自動回覆:消息是關鍵詞或包含關鍵詞回覆此文本

該操做較爲簡單,只需注意關鍵詞自動回覆中,關鍵詞的「未全匹配」和「已全匹配」區別。

  1. 若選擇了全匹配,在編輯頁面則會顯示「已全匹配」(如圖):

    對方發送的內容與設置的關鍵詞須徹底同樣,纔會觸發關鍵字回覆,不能多一個字符也不能少一個字符。好比設置「123」,僅回覆「123」纔會觸發關鍵詞回覆。

  2. 若沒有選擇全匹配的狀況下,編輯頁面則會顯示「未全匹配」(如圖):

    只要對方發送內容包含設置的完整關鍵詞,就會觸發關鍵詞回覆給對方。好比設置「123」,回覆「1234」會觸發,但回覆不完整的關鍵詞「12」則不會觸發關鍵詞回覆。

4.2  素材管理

素材管理主要對圖文消息、圖片、語音、視頻等四種類型的消息進行管理。

現微信公衆平臺已改版,羣發消息需從該管理下才能發送給用戶。

圖文消息編輯界面以下:

用起來挺簡單,左方圖文列表可設置單圖文和多圖文模式,另需注意:圖文消息編輯需將圖片等資源先上傳至圖片。

注:單圖文就是隻有一篇消息(可展現摘要),多圖文就是多篇消息(不展現摘要,只有標題)。

但其實微信公衆平臺的編輯(排版)並不完善,可優先考慮使用第三方編輯器,如秀米、135編輯器、i排版等工具。

詳見知乎:微信公衆號編輯有哪些實用的小工具和小技巧?

4.3  自定義菜單

自定義菜單,即設置公衆號最下方的如下菜單效果,可以使菜單鏈接至網頁、圖文消息或小程序。

自定義菜單有兩種類型:click類型和view類型。

  • click類型:返回消息(發送消息,可選擇四種類型的消息)
  • view類型:相似於超連接,跳轉至一個頁面(跳轉網頁)

此編輯部分也較爲簡單,不作過多說明。

5  開發模式環境搭建

須要的工具:

  • 微信公衆號
  • 外網映射工具(開發調試)

與微信對接的URL要具有如下條件:

  • 在公網上可以訪問
  • 端口只支持80端口

5.1  映射工具

Ngork能夠將內網映射到公網上面,這樣就能夠在公網訪問您的本地網絡服務。

用法:

  • 方法一:ngrok 8080(不穩定)
  • 方法二:ngrok -config ngrok.cfg -subdomain example 8080(目前已改)

幫助文檔:http://www.tunnel.mobi/

【重要】

目前Ngrok已被微信屏蔽了(網址:http://ngrok.2bdata.com/),須要加羣(費用:5元)才能下載客戶端,客戶端已下載至在G盤,將其複製到D盤,修改「star.bat」文件:

而後雙擊執行便可映射成功。

【使用】

映射完畢後,實際上,下面兩條語句是等效的:

http://localhost:8080==http://qijunhui1773.tunnel.echomod.cn

即開啓Tomcat後,輸入「http://qijunhui1773.tunnel.echomod.cn」 便可訪問Tomcat首頁(tomcat服務器和Ngrok映射工具都要開啓)。

同時能夠在別人電腦打開該連接同樣能夠展現項目Dome。

6  開發者模式

開發模式與編輯模式是互斥的,只能使用其一:

6.1  數據交互原理

6.2  開發模式接入(Get方式)

6.2.1  接入操做

6.2.2  代碼實現(Java)

見附件或Eclipse源碼。

代碼編寫完成後,生成域名爲:「http://qijunhui1773.tunnel.echomod.cn/Weixin/wx.do」

配置微信後臺服務器:

提交後,配置成功,出現如下頁面:

注:啓用後,編輯模式將失效。

6.3  消息的接收與響應(POST方式)

6.3.1  消息操做

6.3.2  代碼實現(Java)

見Eclipse中的源碼。

 1 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 2     
 3     req.setCharacterEncoding("UTF-8");//轉換編碼方式
 4     resp.setCharacterEncoding("UTF-8");
 5     PrintWriter out = resp.getWriter();//經過PrintWriter返回消息至微信後臺
 6     
 7     //接收消息
 8     try {
 9         Map<String,String> map = MessageUtil.xmlToMap(req);
10         String fromUserName = map.get("FromUserName");//發送方賬號(一個OpenID)
11         String toUserName = map.get("ToUserName");//開發者微信號
12         String msgType = map.get("MsgType");//text//若是是文本消息的話,MsgType="text"
13         String content = map.get("Content");//文本消息內容
14         
15         String message = null;
16         //判斷是否爲文本消息
17         if("text".equals(msgType)) {
18             com.po.TextMessage text = new com.po.TextMessage();
19             text.setFromUserName(toUserName);//注意,這裏發送者與接收者調換了
20             text.setToUserName(fromUserName);
21             text.setMsgType("text");//文本類型
22             text.setCreateTime("" + new Date().getTime());//當前時間
23             text.setContent("您發送的消息是:" + content);//返回消息
24             //將文本消息轉換爲xml
25             
26             message = MessageUtil.textMessageToXml(text);
27             
28             System.out.println(message);
29         }
30         
31         out.print(message);//返回消息
32     } catch (DocumentException e) {
33         e.printStackTrace();
34     } finally {
35         out.close();
36     }
37 }

主要在這部分進行文本的接收與發生。其餘類都是輔助類,代碼較爲固定。

須要注意:微信後臺都是以XML格式發送或接受數據的,因此在程序中須要如下兩種方法:

  • XML轉文本對象(集合)->需使用dom4j.jar
  • 文本對象轉XML->需使用xstream.jar和xmlpull.jar

注:只要將jar包放置在WebContent->WEB-INF->lib文件夾下,Tomcat發佈後會自動將其部署,沒必要再將其包複製到Tomcat文件夾下。

6.3.3  實現結果

相關文章
相關標籤/搜索