微信公眾號(hào)開(kāi)發(fā)之回復(fù)圖文消息java代碼
微信公眾號(hào)開(kāi)發(fā)之回復(fù)圖文消息,供大家參考,具體內(nèi)容如下
圖文消息的主要參數(shù)說(shuō)明
通過(guò)微信官方的消息接口指南,可以看到對(duì)圖文消息的參數(shù)介紹,如下圖所示:
從上圖可以了解到:
1、圖文消息的個(gè)數(shù)限制為10,也就是圖文中ArticleCount的值(圖文消息的個(gè)數(shù),限制在10條以?xún)?nèi))
2、對(duì)于圖文消息,第一條圖文的圖片顯示為大圖,其他圖文的圖片顯示為小圖。
3、第一條圖文的圖片大小建議為640*320,其他圖文的圖片建議為80*80
下面開(kāi)始實(shí)現(xiàn):
請(qǐng)求消息的基類(lèi):
import com.thoughtworks.xstream.annotations.XStreamAlias; import java.io.Serializable; /** * @author inchlifc */ public class BaseMessage implements Serializable { @XStreamAlias("ToUserName") @XStreamCDATA private String ToUserName; @XStreamAlias("FromUserName") @XStreamCDATA private String FromUserName; @XStreamAlias("CreateTime") private Long CreateTime; @XStreamAlias("MsgType") @XStreamCDATA private String MsgType; public BaseMessage() { super(); } public BaseMessage(String fromUserName, String toUserName) { super(); FromUserName = fromUserName; ToUserName = toUserName; CreateTime = System.currentTimeMillis(); } public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public Long getCreateTime() { return CreateTime; } public void setCreateTime(Long createTime) { CreateTime = createTime; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; } }
圖文消息類(lèi):
import com.thoughtworks.xstream.annotations.XStreamAlias; import java.util.List; @XStreamAlias("xml") public class ArticlesMessage extends BaseMessage { @XStreamAlias("ArticleCount") private int ArticleCount; @XStreamAlias("Articles") private List<ArticlesItem> Articles; public int getArticleCount() { return ArticleCount; } public void setArticleCount(int articleCount) { ArticleCount = articleCount; } public List<ArticlesItem> getArticles() { return Articles; } public void setArticles(List<ArticlesItem> articles) { Articles = articles; } }
圖文消息中的Articles類(lèi):
import com.thoughtworks.xstream.annotations.XStreamAlias; import java.util.List; @XStreamAlias("Articles") public class Articles { private List<ArticlesItem> Articles; }
圖文消息中的ArticlesItem類(lèi):
import com.thoughtworks.xstream.annotations.XStreamAlias; import java.io.Serializable; @XStreamAlias("item") public class ArticlesItem implements Serializable { @XStreamAlias("Title") @XStreamCDATA private String Title; @XStreamAlias("Description") @XStreamCDATA private String Description; @XStreamAlias("PicUrl") @XStreamCDATA private String PicUrl; @XStreamAlias("Url") @XStreamCDATA private String Url; public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getDescription() { return Description; } public void setDescription(String description) { Description = description; } public String getPicUrl() { return PicUrl; } public void setPicUrl(String picUrl) { PicUrl = picUrl; } public String getUrl() { return Url; } public void setUrl(String url) { Url = url; } }
service層實(shí)現(xiàn)方法:
封裝方法
/** * 獲取博客圖文消息 * * @param custermName * @param serverName * @param createTime * @return */ private ArticlesMessage getBlogMessage(String custermName, String serverName, Long createTime) { ArticlesMessage outputMsg = new ArticlesMessage(); outputMsg.setFromUserName(serverName); outputMsg.setToUserName(custermName); outputMsg.setCreateTime(createTime); outputMsg.setMsgType(MsgType.NEWS.getValue()); List<ArticlesItem> articles = new ArrayList<>(); ArticlesItem item1 = new ArticlesItem(); item1.setTitle("晚天吹涼風(fēng)"); item1.setDescription("點(diǎn)擊進(jìn)入晚天吹涼風(fēng)博客"); item1.setPicUrl(WechatConstant.BASE_SERVER + "resources/images/wechat/a.png"); item1.setUrl("https://my.oschina.net/inchlifc/blog"); articles.add(item1); outputMsg.setArticles(articles); outputMsg.setArticleCount(articles.size()); return outputMsg; }
判斷如果輸入數(shù)字1,返回圖文消息推送
// 處理接收消息 ServletInputStream in = request.getInputStream(); // 將POST流轉(zhuǎn)換為XStream對(duì)象 XStream xs = new XStream(); xs = SerializeXmlUtil.createXstream(); XStream.setupDefaultSecurity(xs); xs.allowTypes(new Class[]{TextMessage.class, InputMessage.class, ArticlesMessage.class}); xs.processAnnotations(InputMessage.class); xs.processAnnotations(ArticlesMessage.class); xs.processAnnotations(ImageMessage.class); // 將指定節(jié)點(diǎn)下的xml節(jié)點(diǎn)數(shù)據(jù)映射為對(duì)象 xs.alias("xml", InputMessage.class); // 將流轉(zhuǎn)換為字符串 StringBuilder xmlMsg = new StringBuilder(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1; ) { xmlMsg.append(new String(b, 0, n, "UTF-8")); } logger.info("收到消息====" + xmlMsg.toString()); // 將xml內(nèi)容轉(zhuǎn)換為InputMessage對(duì)象 InputMessage inputMsg = (InputMessage) xs.fromXML(xmlMsg.toString()); // 服務(wù)端 String servername = inputMsg.getToUserName(); // 客戶(hù)端 String custermname = inputMsg.getFromUserName(); // 接收時(shí)間 long createTime = inputMsg.getCreateTime(); // 返回時(shí)間 Long returnTime = Calendar.getInstance().getTimeInMillis() / 1000; //接手文本內(nèi)容 String content = inputMsg.getContent(); // 取得消息類(lèi)型 String msgType = inputMsg.getMsgType(); if (MsgType.TEXT.getValue().equals(msgType)) { //輸入1 推送博客信息 if ("1".equals(content)) { logger.info("收到文本1"); ArticlesMessage outputMsg = getBlogMessage(custermname, servername, returnTime); logger.info("返回博客圖文消息===" + xs.toXML(outputMsg)); response.getWriter().write(xs.toXML(outputMsg)); } }
運(yùn)行結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java微信公眾號(hào)企業(yè)付款開(kāi)發(fā)
- Java版微信公眾號(hào)支付開(kāi)發(fā)全過(guò)程
- 微信公眾號(hào)開(kāi)發(fā)之設(shè)置自定義菜單實(shí)例代碼【java版】
- java微信公眾號(hào)支付開(kāi)發(fā)之現(xiàn)金紅包
- Java微信公眾號(hào)開(kāi)發(fā)之通過(guò)微信公眾號(hào)獲取用戶(hù)信息
- java微信公眾號(hào)開(kāi)發(fā)案例
- 用Java設(shè)計(jì)模式中的觀察者模式開(kāi)發(fā)微信公眾號(hào)的例子
- java微信公眾號(hào)開(kāi)發(fā)第一步 公眾號(hào)接入和access_token管理
- Java開(kāi)發(fā)微信公眾號(hào)接收和被動(dòng)回復(fù)普通消息
- java微信公眾號(hào)開(kāi)發(fā)(搭建本地測(cè)試環(huán)境)
- java開(kāi)發(fā)微信公眾號(hào)支付
- Java 微信公眾號(hào)開(kāi)發(fā)相關(guān)總結(jié)
相關(guān)文章
Java?NIO?Buffer實(shí)現(xiàn)原理詳解
本篇文章主要對(duì)NIO核心三件套:緩沖區(qū)(Buffer)、選擇器?(Selector)和通道(Channel),其中之一的緩沖區(qū)Buffer實(shí)現(xiàn)原理的學(xué)習(xí)總結(jié)。感興趣的小伙伴可以了解一下2021-11-11解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目的詳細(xì)步驟
這篇文章主要介紹了Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程
這篇文章主要介紹了關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程,MVC框架的主要目標(biāo)是將應(yīng)用程序的業(yè)務(wù)邏輯(Model)與用戶(hù)界面(View)分離開(kāi)來(lái),從而提高應(yīng)用程序的可維護(hù)性和可擴(kuò)展性,需要的朋友可以參考下2023-05-05Java 正則表達(dá)式入門(mén)詳解(基礎(chǔ)進(jìn)階)
最近看到很多同學(xué)想要學(xué)習(xí)java正則表達(dá)式的一些知識(shí),那么腳本之家小編就為大家介紹一下,其實(shí)正則表達(dá)式實(shí)用性很強(qiáng),處理大幅文字的時(shí)候都需要用得到,語(yǔ)法也大同小異2017-10-10IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟
這篇文章主要介紹了IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟,首先安裝GenerateSerialVersionUID插件,當(dāng)出現(xiàn)添加serialVersionUID選項(xiàng),選中則會(huì)自動(dòng)生成serialVersionUID,感興趣的朋友一起學(xué)習(xí)下吧2024-02-02