微信公眾帳號開發教程(13) 圖文訊息全攻略

來源:互聯網
上載者:User

引言及內容概要

已經有幾位讀者抱怨“柳峰只用到簡訊作為樣本,從來不提圖文訊息,都不知 道圖文訊息該如何使用”,好吧,我錯了,原本以為把基礎API封裝完、架構搭建好,再給出一個簡訊的 使用樣本,大家就能夠照貓畫虎的,或許是因為我的繪畫功底太差,畫出的那隻貓本來就不像貓吧……

本篇主要介紹微信公眾帳號開發中圖文訊息的使用,以及圖文訊息的幾種表現形式。標題取名為“圖 文訊息全攻略”,這絕對不是標題黨,是想藉此機會把大家對圖文訊息相關的問題、疑慮、障礙全部清除掉。

圖文訊息的主要參數說明

通過微信官方的訊息介面指南,可以看到對圖文訊息的參數介紹,如 下圖所示:

從圖中可以瞭解到:

1)圖文訊息的個數限制為10,也就是圖中ArticleCount的值(圖文訊息的個 數,限制在10條以內);

2)對於多圖文訊息,第一條圖文的圖片顯示為大圖,其他圖文的圖片顯示為 小圖;

3)第一條圖文的圖片大小建議為640*320,其他圖文的圖片大小建議為80*80;

好了, 瞭解這些,再結合第4篇文章所講的訊息及訊息處理工具的封裝,想要回複圖文訊息給使用者也就不是什麼難事 了。

圖文訊息的多種表現形式

下面直接通過代碼示範圖文訊息最主要的五種表現形式的用法, 原始碼如下:

package org.liufeng.course.service;        import java.util.ArrayList;  import java.util.Date;  import java.util.List;  import java.util.Map;        import javax.servlet.http.HttpServletRequest;        import org.liufeng.course.message.resp.Article;  import org.liufeng.course.message.resp.NewsMessage;  import org.liufeng.course.message.resp.TextMessage;  import org.liufeng.course.util.MessageUtil;        /**  * 核心服務類  *   * @author liufeng  * @date 2013-07-25  */public class CoreService {      /**      * 處理微信發來的請求      *       * @param request      * @return      */    public static String processRequest(HttpServletRequest request) {          String respMessage = null;          try {              // xml請求解析              Map<String, String> requestMap = MessageUtil.parseXml(request);                    // 發送方帳號(open_id)              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);              textMessage.setFuncFlag(0);              // 由於href屬性值必須用雙引號引起,這與字串本身的雙引號衝突,所以要轉義              textMessage.setContent("歡迎訪問<a href="http://blog.csdn.net/lyq8479">柳峰的部落格</a>!");              // 將簡訊對象轉換成xml字串              respMessage = MessageUtil.textMessageToXml(textMessage);                    // 簡訊              if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {                  // 接收使用者發送的簡訊內容                  String content = requestMap.get("Content");                        // 建立圖文訊息                  NewsMessage newsMessage = new NewsMessage();                  newsMessage.setToUserName(fromUserName);                  newsMessage.setFromUserName(toUserName);                  newsMessage.setCreateTime(new Date().getTime());                  newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);                  newsMessage.setFuncFlag(0);                        List<Article> articleList = new ArrayList<Article>();                  // 單圖文訊息                  if ("1".equals(content)) {                      Article article = new Article();                      article.setTitle("微信公眾帳號開發教程Java版");                      article.setDescription("柳峰,80後,微信公眾帳號開發經驗4個月。為協助初學者入門,特推出此系列教程,也希望藉此機會認識更多同行!");                      article.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg");                      article.setUrl("http://blog.csdn.net/lyq8479");                      articleList.add(article);                      // 設定圖文訊息個數                      newsMessage.setArticleCount(articleList.size());                      // 設定圖文訊息包含的圖文集合                      newsMessage.setArticles(articleList);                      // 將圖文訊息對象轉換成xml字串                      respMessage = MessageUtil.newsMessageToXml(newsMessage);                  }                  // 單圖文訊息---不含圖片                  else if ("2".equals(content)) {                      Article article = new Article();                      article.setTitle("微信公眾帳號開發教程Java版");                      // 圖文訊息中可以使用QQ表情、符號表情                      article.setDescription("柳峰,80後," + emoji(0x1F6B9)                              + ",微信公眾帳號開發經驗4個月。為協助初學者入門,特推出此系列連載教程,也希望藉此機會認識更多同行!nn目前已推出教程共12篇,包括介面配置、訊息封裝、架構搭建、QQ表情發送、符號表情發送等。nn後期還計劃推出一些實用功能的開發講解,例如:天氣預報、周邊搜尋、聊天功能等。");                      // 將圖片置為空白                      article.setPicUrl("");                      article.setUrl("http://blog.csdn.net/lyq8479");                      articleList.add(article);                      newsMessage.setArticleCount(articleList.size());                      newsMessage.setArticles(articleList);                      respMessage = MessageUtil.newsMessageToXml(newsMessage);                  }                  // 多圖文訊息                  else if ("3".equals(content)) {                      Article article1 = new Article();                      article1.setTitle("微信公眾帳號開發教程n引言");                      article1.setDescription("");                      article1.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg");                      article1.setUrl("http://blog.csdn.net/lyq8479/article/details/8937622");                            Article article2 = new Article();                      article2.setTitle("第2篇n微信公眾帳號的類型");                      article2.setDescription("");                      article2.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg");                      article2.setUrl("http://blog.csdn.net/lyq8479/article/details/8941577");                            Article article3 = new Article();                      article3.setTitle("第3篇n開發模式啟用及介面配置");                      article3.setDescription("");                      article3.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg");                      article3.setUrl("http://blog.csdn.net/lyq8479/article/details/8944988");                            articleList.add(article1);                      articleList.add(article2);                      articleList.add(article3);                      newsMessage.setArticleCount(articleList.size());                      newsMessage.setArticles(articleList);                      respMessage = MessageUtil.newsMessageToXml(newsMessage);                  }                  // 多圖文訊息---首條訊息不含圖片                  else if ("4".equals(content)) {                      Article article1 = new Article();                      article1.setTitle("微信公眾帳號開發教程Java版");                      article1.setDescription("");                      // 將圖片置為空白                      article1.setPicUrl("");                      article1.setUrl("http://blog.csdn.net/lyq8479");                            Article article2 = new Article();                      article2.setTitle("第4篇n訊息及訊息處理工具的封裝");                      article2.setDescription("");                      article2.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg");                      article2.setUrl("http://blog.csdn.net/lyq8479/article/details/8949088");                            Article article3 = new Article();                      article3.setTitle("第5篇n各種訊息的接收與響應");                      article3.setDescription("");                      article3.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg");                      article3.setUrl("http://blog.csdn.net/lyq8479/article/details/8952173");                            Article article4 = new Article();                      article4.setTitle("第6篇n簡訊的內容長度限制揭秘");                      article4.setDescription("");                      article4.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg");                      article4.setUrl("http://blog.csdn.net/lyq8479/article/details/8967824");                            articleList.add(article1);                      articleList.add(article2);                      articleList.add(article3);                      articleList.add(article4);                      newsMessage.setArticleCount(articleList.size());                      newsMessage.setArticles(articleList);                      respMessage = MessageUtil.newsMessageToXml(newsMessage);                  }                  // 多圖文訊息---最後一條訊息不含圖片                  else if ("5".equals(content)) {                      Article article1 = new Article();                      article1.setTitle("第7篇n簡訊中分行符號的使用");                      article1.setDescription("");                      article1.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg");                      article1.setUrl("http://blog.csdn.net/lyq8479/article/details/9141467");                            Article article2 = new Article();                      article2.setTitle("第8篇n簡訊中使用網頁超連結");                      article2.setDescription("");                      article2.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg");                      article2.setUrl("http://blog.csdn.net/lyq8479/article/details/9157455");                            Article article3 = new Article();                      article3.setTitle("如果覺得文章對你有所協助,請通過部落格留言或關注微信公眾帳號xiaoqrobot來支援柳峰!");                      article3.setDescription("");                      // 將圖片置為空白                      article3.setPicUrl("");                      article3.setUrl("http://blog.csdn.net/lyq8479");                            articleList.add(article1);                      articleList.add(article2);                      articleList.add(article3);                      newsMessage.setArticleCount(articleList.size());                      newsMessage.setArticles(articleList);                      respMessage = MessageUtil.newsMessageToXml(newsMessage);                  }              }          } catch (Exception e) {              e.printStackTrace();          }          return respMessage;      }            /**      * emoji表情轉換(hex -> utf-16)      *       * @param hexEmoji      * @return      */    public static String emoji(int hexEmoji) {          return String.valueOf(Character.toChars(hexEmoji));      }  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.