Java與微信不得不說的故事——實現圖文消息的發送


  上面已經實現了消息的接收和發送,下面開始整個圖文消息。這個才是大頭吧,畢竟公眾號還是得靠點圖才能留住觀眾。hey~左邊的觀眾。hey~右邊的觀眾。可惜菜鳥的博文沒有觀眾。還是給大家貼下柳峰老師的博文吧,畢竟又是參照他的做的。博文連接貼到最下面了。哈哈,想打我嗎?!

  其實,看完柳峰老師的博客,應該就感覺到很簡單了吧,哈哈,又想打我是嗎?!

  首先先看下微信開發文檔中圖文消息中必備的屬性都有啥。

參數 是否必須 說明
ToUserName 接收方帳號(收到的OpenID)
FromUserName 開發者微信號
CreateTime 消息創建時間 (整型)
MsgType news
ArticleCount 圖文消息個數,限制為10條以內
Articles 多條圖文消息信息,默認第一個item為大圖,注意,如果圖文數超過10,則將會無響應
Title 圖文消息標題
Description 圖文消息描述
PicUrl 圖片鏈接,支持JPG、PNG格式,較好的效果為大圖360*200,小圖200*200
Url 點擊圖文消息跳轉鏈接

 

 

 

 

  

 

 

 

 

可以看到,比起本文消息,增加的屬性有:Aritcles、AticleCount、Title、Description、PicUrl、Url。

 

<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> 


  根據以上,我們可以建立與圖文消息有關的實體類。NewsMessage.java 和 Article.java。

  

package org.liufeng.course.message.resp;

import java.util.List;

/**
 * 文本消息
 * 
 * @author liufeng
 * @date 2013-09-11
 */
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;
	}
}

  

package org.liufeng.course.message.resp;

/**
 * 圖文model
 * 
 * @author liufeng
 * @date 2013-09-11
 */
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;
	}
}

  有了上述實體類,可以在上一節的coreService中繼續添加回復圖文消息的代碼,我寫的如下:

// 單圖文消息
				if ("1".equals(content)) {

					// 創建圖文消息(回復用)
					NewsMessage newsMessage = new NewsMessage();
					newsMessage.setToUserName(fromUserName);
					newsMessage.setFromUserName(toUserName);
					newsMessage.setCreateTime(new Date().getTime());
					newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);

					List<Article> articleList = new ArrayList<Article>();

					Article article = new Article();
					article.setTitle("haojiahong的博客");
					article.setDescription("我不是高手,我不會武功。"+emoji(0x1F61D));	
					article.setPicUrl("http://pic.cnblogs.com/avatar/466668/20150530175722.png");
					article.setUrl("http://www.cnblogs.com/haojiahong");
					articleList.add(article);
					// 設置圖文消息個數
					newsMessage.setArticleCount(articleList.size());
					// 設置圖文消息包含的圖文集合
					newsMessage.setArticles(articleList);
					// 將圖文消息對象轉換成xml字符串
					respMessage = MessageUtil.messageToXml(newsMessage);
				}
			}

  當微信用戶端輸入“1”的時候,會回復一條圖文消息。如下圖所示:

  此圖是是使用微信在線調試器得到的結果,其中圖片和符號表情沒有顯示出來,不過在手機上測試時可以正常顯示,所以可以大可放心喲~

  

 

  加一點題外話:

  這是菜單列,一開始最后提示回復“?”的時候給重新顯示此菜單。可以?有中文和英文兩種形式,手機默認的是中文,而寫程序的時候習慣上用英文,所以,這種情況最好還是能避免就避免了。

  代碼如下:

/**
	 * 主菜單
	 * @return
	 */
	public static String getMainMenu() {  
	    StringBuffer buffer = new StringBuffer();  
	    buffer.append("您好,我是(●—●),請回復數字選擇服務:").append("\n\n");  
	    buffer.append("1  我的博客").append("\n");  
	    buffer.append("2  公交查詢").append("\n");  
	    buffer.append("3  周邊搜索").append("\n");  
	    buffer.append("4  歌曲點播").append("\n");  
	    buffer.append("5  經典游戲").append("\n");  
	    buffer.append("6  美女電台").append("\n");  
	    buffer.append("7  人臉識別").append("\n");  
	    buffer.append("8  聊天嘮嗑").append("\n\n");  
	    buffer.append("回復“0”顯示此幫助菜單");  
	    return buffer.toString();  
	}  
	

  

  嘿嘿,這里有柳峰老師的博客,很經典喲,別忘記點了呀,哈哈哈!

  柳峰老師圖文消息攻略博客地址:http://blog.csdn.net/lyq8479/article/details/9393195


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM