微信開發圖文資訊教程?

本篇主要介紹微信公眾帳號開發中圖文訊息的使用,以及圖文訊息的幾種表現形式。標題取名為”圖文訊息全攻略”,這絕對不是標題黨,是想借此機會把大家對圖文訊息相關的問題、疑慮、障礙全部清除掉。因程式碼無法排版,很難看,所以請大家點選參考連結檢視更加詳細內容

圖文訊息的主要引數說明

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

從圖中可以瞭解到:

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

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

第一條圖文的圖片大小建議為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 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("歡迎訪問部落格!");
// 將文字訊息物件轉換成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

articleList = new ArrayList
();

// 單圖文訊息

if ("1".equals(content))

{
Article article = new Article();

article.setTitle("微信公眾帳號開發教程Java版");

article.setDescription("為幫助初學者入門,特推出此係列教程,也希望藉此機會認識更多同行!");

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個月。為幫助初學者入門,特推出此係列連載教程,也希望藉此機會認識更多同行!\n\n目前已推出教程共12篇,包括介面配置、訊息封裝、框架搭建、QQ表情傳送、符號表情傳送等。\n\n後期還計劃推出一些實用功能的開發講解,例如:天氣預報、周邊搜尋、聊天功能等。");

// 將圖片置為空
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));
}
}

相關問題答案